计算字符串子列表中的元素

时间:2019-06-06 13:31:49

标签: python multidimensional-array

嗨,我正在学习使用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函数

3 个答案:

答案 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]