0

如何将相同的元素添加到列表中?

A= [2,3,4,4]
B= [2,4,4,5,7,6,7]

for i in B:
    if i ==4:
        B.remove(4)
        A.append(4)

        print B
        print A

当我这样做时,它删除了列表 B 中的所有 4,但仅添加了一个 4。我怎样才能使 B 中的所有 4 都进入 A?

4

3 回答 3

2

不建议在迭代列表时修改列表。

>>> A = [2,3,4,4]
>>> B = [2,4,4,5,7,6,7]
>>> 
>>> A.extend([4] * B.count(4))
>>> B = [x for x in B if x != 4]
>>> A
[2, 3, 4, 4, 4, 4]
>>> B
[2, 5, 7, 6, 7]
于 2013-08-02T07:57:15.123 回答
1

如果我运行你的脚本,我会得到以下输出

[2, 4, 5, 7, 6, 7]
[2, 3, 4, 4, 4]

仅从 B 中删除了一个 4 ,因为您在遍历列表时删除了一个元素。也许你应该在循环 B 之后从 B 中删除 4。

A = [2,3,4,4]
B = [2,4,4,5,7,6,7]

for i in B:
    if i == 4:
        A.append(4)
B = filter(lambda a: a != 4, B)
print B
print A
于 2013-08-02T07:55:45.473 回答
0

以下对我有用:

A = [2, 3, 4, 4]
b = [2,4,4,5,7,6,7]
B=b[::]  # Create a copy so we don't edit the 'B' list we want to iterate over.
for i in B:
    if i==4:
        A.append(i)
        b.remove(i)

B = b[::]

print "B =",B
print "A =",A

这给出了:

B = [2, 5, 7, 6, 7]
A = [2, 3, 4, 4, 4, 4]

编辑:对不起,我第一次发布时得到的“A”列表不正确!

于 2013-08-02T08:23:04.387 回答