append
добавляет объект в конец списка, так как список является изменяемым типом данных, который вы можете добавить в конец списка.extend
добавляет каждый элемент итерируемого в конец списка.
Ошибка, которую вы делаете, заключается в расширении списка с помощью последовательности str
, если вы хотите добавить объект, используйте append:
a = ['2', '3m7n', '3', '17']
b = ['bat', 'zoo', 'next']
for i in a:
if len(i) == 4:
b.append(i)
b
['bat', 'zoo', 'next', '3', 'm', '7', 'n']
Ошибка, которую вы сделали с помощью extend, - это то, где вырасширил список строкой, которая затем обрабатывает его как итеративный и проходит через каждый символ строки, как например for i in '3m7n': print(i)
.Используя тот же контекст, но преобразуя каждый элемент в цикле в list
, вы добавляете каждый элемент в список extends:
a = ['2', '3m7n', '3', '17']
b = ['bat', 'zoo', 'next']
for i in a:
if len(i) == 4:
b.extend([i])
b
>>['bat', 'zoo', 'next', '3m7n']
Ради простоты, читабельности и немного большей эффективностиВы можете использовать понимание списка для замены цикла for
:
b.extend([i for i in a if len(i) == 4 ])
И если вы наблюдаете, он работает точно так же, как цикл for, расширяя список объектом списка.