python: манипулирование списком - PullRequest
4 голосов
/ 27 апреля 2010

У меня есть список L объектов (что стоит в scons). Я хотел бы создать два списка L1 и L2, где L1 равно L с добавленным элементом I1, а L2 равно L с добавленным элементом I2.

Я бы использовал append, но это изменяет исходный список.

Как я могу сделать это в Python? (извините за вопрос новичка, я мало пользуюсь языком, только для scons)

Ответы [ 3 ]

8 голосов
/ 27 апреля 2010
L1 = L + [i1]
L2 = L + [i2]

Это, наверное, самый простой способ. Другой вариант - скопировать список и добавить:

L1 = L[:]       #make a copy of L
L1.append(i1)
3 голосов
/ 27 апреля 2010
L1=list(L)

дублирует список. Я думаю, что вы можете выяснить, остальные:)

2 голосов
/ 27 апреля 2010

Вы можете сделать копию своего списка

>>> x = [1, 2, 3]
>>> y = list(x)
>>> y.append(4)
>>> y
[1, 2, 3, 4]
>>> z = list(x)
>>> z.append(5)
>>> z
[1, 2, 3, 5]

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

>>> x = [1, 2, 3]
>>> y = x + [4]
>>> z = x + [5]
>>> y
[1, 2, 3, 4]
>>> z
[1, 2, 3, 5]

Первый вариант, вероятно, более идиоматичен, но последний в этом случае работает нормально. Некоторые люди также копируют, используя нарезку (x[:] создает новый список со всеми элементами исходного списка, на который ссылается x) или модуль copy. Ничто из этого не ужасно, но я нахожу первое загадочным, а второе - немного глупым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...