这是我的代码:
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]]
答案 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