Подсчет средней длины списка списков - PullRequest
0 голосов
/ 12 апреля 2019

Хотелось бы получить среднюю длину каждого элемента в этом списке

Я пробовал выше:

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

Ответы [ 3 ]

1 голос
/ 12 апреля 2019

Просто попробуйте получить len и зафиксировать ошибку, если нет:

lista=[("a,b,c"),1,1,2,(1,"n")]

for i in lista:
    try:
        print(len(i))
    except TypeError:
        print(1)
0 голосов
/ 12 апреля 2019

Вы можете использовать функцию 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 - это кортеж, содержащий только одну строку.Может быть опечатка.

0 голосов
/ 12 апреля 2019

Ваша проблема в том, что вы проверяете не длину своего списка, а только что созданного списка 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

Редактировать: Моя предыдущая версиядействительно не работал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...