问题描述
我目前有一个元组列表,我试图计算列表中的元组数,以便我可以进行其他计算,但似乎无法正常工作。
ties = [(84,40,{'variable1' : 0.11225,'variable2': -0.2581}),(84,4,{'variable1' : -0.18855,'variable2': -0.6458}),23,{'variable1' : 0.05144,'variable2': -0.7581})]
ties = list((int(j) for i in ties for j in i))
res = len(ties)
#alternatively I also tried
from itertools import chain
res = len(list(map(int,chain.from_iterable(ties))))
以上(两者)都会引发错误TypeError: 'int' object is not iterable
,但我不明白为什么。有想法吗?
谢谢!
***编辑***
修复了语法错误,现在可以正常运行,谢谢大家的建议
解决方法
由isinstance
过滤的列表推导,假设ties
实际上是以下对象(因为OP的语法无效)
ties = [
(84,40,{'variable1' : 0.11225,'variable2': -0.2581}),(84,4,{'variable1' : -0.18855,'variable2': -0.6458}),23,{'variable1' : 0.05144,'variable2': -0.7581})
]
count_tuples = len([o for o in ties if isinstance(o,tuple)])
打印:3
不能重复使用句柄。因此,您在尝试执行代码时遇到错误。另外,您发布的以下代码给出了语法错误。
ties = [(84,84,'variable2': -0.7581})]
您似乎错过了 84,4 之前的开括号,又错过了 84,23 之前的开括号。
尝试以下操作:
ties = [(84,'variable2': -0.7581})]
ties_len = list((len(i) for i in ties))
,
如果只想知道列表中的元组数,则只需要这样做:
ties = [
(84,'variable2': -0.7581})
]
res = len(ties)
# 3
如果要使用列表中具有元组长度的列表,则需要使用:
res = [len(tie) for tie in ties]
# [3,3,3]