嗨,我正在学习使用Python进行列表理解的方法,我得到了二维的字符串列表:
a="agagaffsst555s5s"
b="jkkjsd675sggd"
c="flflfkisisud787782ssa"
d="glgjdusgygd4562381djakughduiytywy"
e="hjashjyyd665656452hhf"
f="687255365165417gsafvx7787878"
mylist=[[a,b],[c,d,e],[f,a,d],[d]]
现在我想获得一个列表mylist2
,其尺寸与mylist
相同,但包含子列表中所有字符串的字符总和,因此:
mylist2[0]=len(mylist[0][0]) + len(mylist[0][1])
我试图写一个理解:
mylist2=[sum(len(mylist[i][j])) for j in range(len(mylist[i])) for i in range(len(mylist))]
,它不起作用。我想我也错误地使用了sum
函数
答案 0 :(得分:1)
使用nested list comprehension。然后,取每个子列表中元素的总和以获得相应的字符总数。此外,我使用range(len(...))
提供了一个简短的简化版本没有。您可以直接遍历列表元素
mylist2 = [sum([len(j) for j in subl]) for subl in mylist]
# [29, 75, 77, 33]
如果您不想要总和,则只需删除sum()
命令
mylist2 = [[len(j) for j in subl] for subl in mylist]
# [[16, 13], [21, 33, 21], [28, 16, 33], [33]]
答案 1 :(得分:0)
尝试一下:
mylist2 = list(list(map(len, i)) for i in mylist)
输出:
[[16, 13], [21, 33, 21], [28, 16, 33], [33]]
要获取每个子列表的总和:
mylist2 = list(sum(list(map(len, i))) for i in mylist)
输出:
[29, 75, 77, 33]
答案 2 :(得分:0)
我将加入列表中的每个项目并获得长度。
mylist=[[a,b],[c,d,e],[f,a,d],[d]]
mylist2=[len(''.join(i)) for i in mylist]
mylist2
Result:
[29, 75, 77, 33]