如何在python中将一个列表插入另一个列表

时间:2019-02-07 08:27:55

标签: python list

这是我的代码:

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 :(得分:2)

我认为这可以实现您想要的:

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'

答案 1 :(得分:1)

您的代码存在的问题是您没有在嵌套列表中创建或添加元素。这是适应代码的一种方法:

# 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]]

答案 2 :(得分:1)

使用列表理解:

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

您在这里-

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

答案 6 :(得分:1)

其他一个班轮选项:

[ [ 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是{{1}中每个string派生的子列表1}}。

a