Выбор списков в списке определенной длины - PullRequest
0 голосов
/ 14 марта 2019

Вот что у меня есть:

original_list=[[1,2],[1,2,3],[1,2],[1,2,3,4],[1,2,3]]

Я бы хотел найти в своем списке списки длиной 2, 3, 4 и т. Д.:

.

length2_list=[[1,2],[1,2]]

length3_list=[[1,2,3],[1,2,3]]

length4_list=[[1,2,3,4]]

Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 14 марта 2019

список пониманий

#don't call lists "list" as a variable 
l=[[1,2],[1,2,3],[1,2],[1,2,3,4],[1,2,3]]

#for len 2
l_2=[x for x in l if len(x)==2]

#for len 3
l_3=[x for x in l if len(x)==3]

и т.д.

1 голос
/ 14 марта 2019

Это просто с функцией Len (), которая может сообщить вам длину списка

origal_list=[[1,2],[1,2,3],[1,2],[1,2,3,4],[1,2,3]]

length2_list=[]

length3_list=[]

length4_list=[]


for lst in origal_list:
    if len(lst) == 2:
        length2_list.append(lst)
    if len(lst) == 3:
        length3_list.append(lst)
    if len(lst) == 4:
        length4_list.append(lst)

print(length2_list)
print(length3_list)
print(length4_list)

результат:

[[1, 2], [1, 2]]
[[1, 2, 3], [1, 2, 3]]
[[1, 2, 3, 4]]
0 голосов
/ 14 марта 2019

Попробуйте что-то вроде этого, это будет работать для n списков длины n:

lists = {}
list = [[1, 2], [1, 2, 3], [1, 2], [1, 2, 3, 4], [1, 2, 3]]

for l in list:
    length = len(l)
    if lists.get(length) is None:
        lists[length] = []
    lists[length].append(l)

Это создает словарь, длина которого будет использоваться в качестве ключа для списка списков. Затем он перебирает исходный список и добавляет его к правильному ключу.

Будет выведено что-то вроде этого: {2: [[1, 2], [1, 2]], 3: [[1, 2, 3], [1, 2, 3]], 4: [[1, 2, 3, 4]]}

...