Разрешить метод добавления списка Python для возврата нового списка

Я хочу сделать что-то вроде этого:

myList = [10,20,30] yourList = myList.append (40) 

К сожалению, список append не возвращает измененный список.

Итак, как я могу разрешить append возвращать новый список?

6 Solutions collect form web for “Разрешить метод добавления списка Python для возврата нового списка”

Вместо этого не используйте append, а конкатенацию:

 yourList = myList + [40] 

Это возвращает новый список; myList не будет затронут. Если вам нужно, чтобы myList затронут, либо используйте .append() любом случае, тогда назначьте свой yourList отдельно от (копии) myList .

list.append является встроенным и, следовательно, не может быть изменен. Но если вы хотите использовать что-то другое, кроме append , вы можете попробовать + :

 In [106]: myList = [10,20,30] In [107]: yourList = myList + [40] In [108]: print myList [10, 20, 30] In [109]: print yourList [10, 20, 30, 40] 

Конечно, недостатком этого является то, что создается новый список, который занимает гораздо больше времени, чем append

Надеюсь это поможет

Вы можете подклассифицировать тип встроенного списка и переопределить метод «добавить». Или еще лучше, создайте новую, которая будет делать то, что вы хотите. Ниже приведен код для переопределенного метода «добавить».

 #!/usr/bin/env python class MyList(list): def append(self, element): return MyList(self + [element]) def main(): l = MyList() l1 = l.append(1) l2 = l1.append(2) l3 = l2.append(3) print "Original list: %s, type %s" % (l, l.__class__.__name__) print "List 1: %s, type %s" % (l1, l1.__class__.__name__) print "List 2: %s, type %s" % (l2, l2.__class__.__name__) print "List 3: %s, type %s" % (l3, l3.__class__.__name__) if __name__ == '__main__': main() 

Надеюсь, это поможет.

Вам нужно только сделать myList.append (40)

Он добавит его в исходный список, а не вернет новый список.

Попробуйте использовать itertools.chain(myList, [40]) . Это вернет генератор в виде последовательности, вместо того, чтобы выделять новый список. По сути, это возвращает все элементы из первого итерабельного до тех пор, пока он не исчерпан, а затем перейдет к следующему итерируемому, пока все итерации не будут исчерпаны.

Просто чтобы расширить ответ Storstamp

Вам нужно только сделать myList.append (40)

Он добавит его в исходный список, теперь вы можете вернуть переменную, содержащую исходный список.

Если вы работаете с очень большими списками, это путь.

  • Как создать список исправлений в python?
  • Python: создать дубликат массива
  • Как сделать список в Python отдельным на основе свойства класса в списке?
  • Почему foo.append (bar) влияет на все элементы в списке списков?
  • Найти максимальное значение в списке кортежей в Python
  • Python: переименовать дубликаты в списке с прогрессивными числами без сортировки списка
  • Почему кортежи занимают меньше места в памяти, чем списки?
  • Удаление пунктуации из элементов списка Python
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.