2013-08-02 1 views
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 

Когда я сделал это, он удаляет все 4s в списке B, но А только с добавлением одной 4. Как я могу сделать это так, чтобы все четверки в B пойдут A ?

ответ

1

Если я запустить сценарий, я получаю следующие выходные данные

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

Существует только один 4 удален из B, потому что вы удалили элемент во время работы над списком. Может быть, вы должны удалить 4-х из B после цикла по В.

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 
2

Изменение списка whiling Перебор это не рекомендуется ставить.

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

это работает со строкой? – user2626540

+0

@ user2626540, Если вы имеете в виду '['2', '3', '4', '5']', да, это работает. – falsetru

+0

@ user2626540, [Примите ответ] (http://stackoverflow.com/help/accepted-answer), если ответ был полезен. – falsetru

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] 

Edit: К сожалению, я получил список 'А' неправильный, когда я первый отвечал!