我希望我可以得到列表中每个元素的平均长度
我已经尝试了以上内容:
lista=[("a,b,c"),1,1,2,(1,"n")]
for i in lista:
a=[]
a.append(i)
print(len(a))
每个元素的实际结果是len = 1。我猜我无法进入列表元素...预期结果将是:3,1,1,1,2
答案 0 :(得分:1)
只需尝试获取len并捕获错误(如果没有)
lista=[("a,b,c"),1,1,2,(1,"n")]
for i in lista:
try:
print(len(i))
except TypeError:
print(1)
答案 1 :(得分:0)
您可以使用iter
函数来检查元素是否可迭代,如果可迭代,则获取其长度,否则追加1
:
lista=[("a,b,c"),1,1,2,(1,"n")]
for elem in lista:
try:
iter(elem)
print(len(elem))
except TypeError:
print(1)
结果:
5
1
1
1
2
第一个元素是5
而不是3
的原因是因为lista
的第一个元素是仅包含一个字符串的元组。可能是拼写错误。
答案 2 :(得分:-1)
您的问题是,您不是在检查列表的长度,而是在检查新创建的列表a [i]的长度,该列表的设计长度为一 您想要:
lista=[("a,b,c"),1,1,2,(1,"n")]
lengths=[]
for i in lista:
if isinstance(i,int):
lengths.append(1)
else:
try:
lengths.append(len(i))
except:
pass
print lengths
编辑:我的先前版本确实无法正常工作