Как добавить несколько значений в список в одну строку в Python?

У меня есть список, к которому я хочу добавить несколько значений, и я использую append(), как показано ниже, чтобы добавить еще 10 цифр

>>> x = [1, 2, 3, 4]
>>> x.append(5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (10 given)

Я вроде понял, что это значит, поэтому я попытался сделать это со списком:

>>> x = [1, 2, 3, 4]
>>> x.append([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> x
[1, 2, 3, 4, [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]]

Это не то, что я хочу. Содержит ненужные квадратные скобки. Я хочу вот что:

>>> x = [1, 2, 3, 4]
>>> x.what_I_want([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

Является ли первое изменение, которое я сделал, чтобы убрать TypeError, правильное изменение? Или вот почему это не работает?

4 голоса | спросил user3373385 4 MaramTue, 04 Mar 2014 04:24:24 +04002014-03-04T04:24:24+04:0004 2014, 04:24:24

4 ответа


0

Используйте extend():

>>> x = [1, 2, 3, 4]
>>> x.extend([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

Вместо ввода цифр от 5 до 15 используйте range():

>>> x = [1, 2, 3, 4]
>>> x.extend(range(5, 15))
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

Первое внесенное вами изменение было правильным, поскольку вы можете append по одному элементу за раз, а не tuple как (5, 6, 7, 8, 9, 10, 11, 12, 13, 14)

ответил A.J. Uppal 4 MaramTue, 04 Mar 2014 04:25:28 +04002014-03-04T04:25:28+04:0004 2014, 04:25:28
0

Он называется extend:

>>> x = [1, 2, 3, 4]
>>> x.extend([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

http://docs.python.org/2/учебник /datastructures.html # более-на-листы http://docs.python.org/2/library/stdtypes .html # изменяемые-последовательности-типа

Для полноты, другие ваши варианты создают новый список как объединение двух списков:

>>> x = [1, 2, 3, 4]
>>> x + [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

>>> x += [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

И присвоение пустому срезу в конце:

>>> x = [1, 2, 3, 4]
>>> x[len(x):len(x)] = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

Используйте extend.

ответил Pavel Anossov 4 MaramTue, 04 Mar 2014 04:25:16 +04002014-03-04T04:25:16+04:0004 2014, 04:25:16
0

Есть несколько способов сделать это в Python.

Наиболее распространенный и идиоматический подход заключается в использовании метода extend для расширения списка на месте.

x = [1, 2, 3, 4]
y = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
x.extend(y)
print(x)

Оператор сложения также может быть использован для этого, хотя он создает новый список.

x = [1, 2, 3, 4]
y = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
z = x + y # This creates a new list `z`
print(z)

Расширенное назначение также можно использовать для расширения списка на месте.

x = x_ = [1, 2, 3, 4]
y = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
x += y # This doesn't create a new list
assert x is x_
print(x)

Особенно эзотерический подход предполагает использование назначения срезов. Вы бы хотели сделать это, только если хотите запутать людей.

x = [1, 2, 3, 4]
y = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
x[len(x):] = y
print(x)
ответил rectangletangle 4 MaramTue, 04 Mar 2014 04:43:17 +04002014-03-04T04:43:17+04:0004 2014, 04:43:17
0

Метод list append() принимает один аргумент, который добавляется в список. Таким образом, когда вы передаете ему список, этот список становится новым последним элементом списка, к которому он добавляется. Поддерживая такую ​​согласованность, Python позволяет нам удобно создавать и обрабатывать списки списков и более сложные структуры данных. Но это значит, что append() - это не тот ответ, который вы ищете.

Самый простой ответ на вашу проблему -

x += range(15)

Это будет хорошо работать в Python 2, но в Python 3 range() является генератором, поэтому вы должны использовать

x += list(range(15))

Списки можно добавлять вместе, как и кортежи, и это работает так же, как конкатенация строк.

ответил holdenweb 4 MaramTue, 04 Mar 2014 04:40:53 +04002014-03-04T04:40:53+04:0004 2014, 04:40:53

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132