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

2024-10-02 00:32:44 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我正在学习Python中的列表理解,我给自己准备了一个二维字符串列表:

a="agagaffsst555s5s"
b="jkkjsd675sggd"
c="flflfkisisud787782ssa"
d="glgjdusgygd4562381djakughduiytywy"
e="hjashjyyd665656452hhf"
f="687255365165417gsafvx7787878"

mylist=[[a,b],[c,d,e],[f,a,d],[d]]

现在我想得到一个与mylist维度相同的mylist2列表,但是包含子列表中所有字符串的字符和,这样: 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函数


Tags: 字符串in列表forlenrange字符sum
3条回答

我将加入列表中的每个项目并获得长度

mylist=[[a,b],[c,d,e],[f,a,d],[d]]
mylist2=[len(''.join(i)) for i in mylist] 
mylist2

Result:
[29, 75, 77, 33]

使用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]]

试试这个:

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]

相关问题 更多 >

    热门问题