Как вставить один список в другой список в Python - PullRequest
0 голосов
/ 07 февраля 2019

вот мой код:

d = ['ant', 'bird', 'gecko', 'snake', 'wasp']
a = ['rabbit panda bird rabbit', 'bird gecko ant panda', 'wasp snake gecko ant']
b = []
for i in range (0, len(a)):
    c = a[i].split()
    for i in d:
        b.append(c.count(i))
print(b)

вот вывод:

[0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1]

но я хочу желаемый вывод, как это:

[[0, 1, 0, 0, 0], [1, 1, 1, 0, 0], [1, 0, 1, 1, 1]]

Ответы [ 7 ]

0 голосов
/ 07 февраля 2019

Вот, пожалуйста, -

d = ['ant', 'bird', 'gecko', 'snake', 'wasp']
a = ['rabbit panda bird rabbit', 'bird gecko ant panda', 'wasp snake gecko ant']
b = []
for i in range (0, len(a)):
    c = a[i].split()
    count_list = [c.count(i) for i in d]
    b.append(count_list)
print(b)

Output - 
[[0, 1, 0, 0, 0], [1, 1, 1, 0, 0], [1, 0, 1, 1, 1]]
0 голосов
/ 07 февраля 2019

Другой вариант с одним вкладышем:

[ [ sub.count(word) for word in d ] for sub in [ string.split() for string in a ] ]
#=> [[0, 1, 0, 0, 0], [1, 1, 1, 0, 0], [1, 0, 1, 1, 1]]

В нем указывается для каждого word в d отсчет его вхождения в sub, где sub - это подсписок, полученный для каждого string в a.

[ string.split() for string in a ]
#=> [['rabbit', 'panda', 'bird', 'rabbit'], ['bird', 'gecko', 'ant', 'panda'], ['wasp', 'snake', 'gecko', 'ant']]
0 голосов
/ 07 февраля 2019
spam = ['ant', 'bird', 'gecko', 'snake', 'wasp']
eggs = ['rabbit panda bird rabbit', 'bird gecko ant panda', 'wasp snake gecko ant']

print([[int(word in egg.split(' ')) for word in spam] for egg in eggs])

выход

[[0, 1, 0, 0, 0], [1, 1, 1, 0, 0], [1, 0, 1, 1, 1]]
0 голосов
/ 07 февраля 2019

Использование понимания списка Python

d = ['ant', 'bird', 'gecko', 'snake', 'wasp']
a = ['rabbit panda bird rabbit', 'bird gecko ant panda', 'wasp snake gecko ant']
b = []
for i in range (0, len(a)):
    c = a[i].split()
    b.append([c.count(i) for i in d])
print(b) # [[0, 1, 0, 0, 0], [1, 1, 1, 0, 0], [1, 0, 1, 1, 1]]
0 голосов
/ 07 февраля 2019

Использование списка понимания:

d = ['ant', 'bird', 'gecko', 'snake', 'wasp']
a = ['rabbit panda bird rabbit', 'bird gecko ant panda', 'wasp snake gecko ant']

list_of_lists = [[x.split().count(y) for y in d] for x in a]

print list_of_lists

Вывод:

[[0, 1, 0, 0, 0], [1, 1, 1, 0, 0], [1, 0, 1, 1, 1]]
0 голосов
/ 07 февраля 2019

Проблема с вашим кодом в том, что вы не создаете и не добавляете элементы в вложенный список .Вот способ сделать это, адаптируя ваш код:

# Start by creating a nsted list the same length of a
b = [[] for _ in range(len(a))]
# [[], [], []]
# Do the same but instead appending the elements to the sublists
# in b using i as index
for i in range (0, len(a)):
    c = a[i].split()
    for j in d:
        b[i].append(c.count(j))
print(b)

# [[0, 1, 0, 0, 0], [1, 1, 1, 0, 0], [1, 0, 1, 1, 1]]

Вы также можете использовать понимание вложенного списка для достижения этого:

[[j.split().count(i) for i in d] for j in a]

Вывод

[[0, 1, 0, 0, 0], [1, 1, 1, 0, 0], [1, 0, 1, 1, 1]]
0 голосов
/ 07 февраля 2019

Я думаю, что это дает то, что вы хотите:

d = ['ant', 'bird', 'gecko', 'snake', 'wasp']
a = ['rabbit panda bird rabbit', 'bird gecko ant panda', 'wasp snake gecko ant']
b = []
for i in range (0, len(a)):
    c = a[i].split()
    e = []
    for i in d:
        e.append(c.count(i))
    b.append(e)
print(b)

Обратите внимание на добавление локального массива 'e', ​​к которому добавлено содержимое, затем он добавляется в ваш массив 'b'

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