Подсчет элементов в подсписке строк - PullRequest
0 голосов
/ 06 июня 2019

Привет, я изучаю понимание списка в 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 ]

1 голос
/ 06 июня 2019

Использовать понимание вложенного списка .Затем возьмите сумму элементов в каждом подсписке, чтобы получить соответствующее общее количество символов.Кроме того, я представляю более короткую упрощенную версию без с использованием 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]]
.
0 голосов
/ 06 июня 2019

Я присоединюсь к каждому пункту в списке и получу длину.

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

Result:
[29, 75, 77, 33]
0 голосов
/ 06 июня 2019

Попробуйте это:

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...