Как добавить несколько элементов в одну строку в Python

91

У меня есть:

count = 0
i = 0
while count < len(mylist):
    if mylist[i + 1] == mylist[i + 13] and mylist[i + 2] == mylist[i + 14]:
        print mylist[i + 1], mylist[i + 2]
    newlist.append(mylist[i + 1])
    newlist.append(mylist[i + 2])
    newlist.append(mylist[i + 7])
    newlist.append(mylist[i + 8])
    newlist.append(mylist[i + 9])
    newlist.append(mylist[i + 10])
    newlist.append(mylist[i + 13])
    newlist.append(mylist[i + 14])
    newlist.append(mylist[i + 19])
    newlist.append(mylist[i + 20])
    newlist.append(mylist[i + 21])
    newlist.append(mylist[i + 22])
    count = count + 1
    i = i + 12

Я хотел newlist.append()преобразовать заявления в несколько утверждений.

без разницы
источник
Очевидно, это не одно и то же, если вы получите разные результаты.
JJJ
Это недопустимый синтаксис.
TerryA
4
Предполагая, что ваши объекты должны быть списками, ваш код недействителен Python, который вы используете []вместо (). Пожалуйста, разместите настоящий рабочий код.
BrenBarn

Ответы:

227

Нет. Метод добавления всей последовательности list.extend().

>>> L = [1, 2]
>>> L.extend((3, 4, 5))
>>> L
[1, 2, 3, 4, 5]
Игнасио Васкес-Абрамс
источник
'insert' работает как 'append', но добавляет в начало списка. Есть ли функция для добавления нескольких значений в начало списка?
Sparrow
@sparrow: Нет. Вместо этого срезайте.
Игнасио Васкес-Абрамс,
вам нужно, чтобы второй вход был списком, или это может быть просто каждый элемент, разделенный запятыми?
Чарли Паркер
@CharlieParker: аргумент list.extend()должен быть повторяемым.
Игнасио Васкес-Абрамс
5

Нет.

Во-первых, appendэто функция, поэтому вы не можете писать, append[i+1:i+4]потому что пытаетесь получить фрагмент вещи, не являющейся последовательностью. (Вы не можете получить его элемент, либо: append[i+1]это неверно по той же причине) . При вызове функции, аргумент идет в скобках , т.е. круглых: ().

Во-вторых, вы пытаетесь «взять последовательность и поместить каждый ее элемент в конец этой другой последовательности в исходном порядке». Это пишется extend. appendэто «возьмите эту вещь и поместите ее в конец списка как отдельный элемент , даже если это тоже список ». (Напомним, что список - это своего рода последовательность.)

Но тогда вы должны знать, что i+1:i+4это специальная конструкция, которая появляется только внутри квадратных скобок (для получения фрагмента из последовательности) и фигурных скобок (для создания dictобъекта). Вы не можете передать его функции. Так что extendс этим нельзя . Вам нужно создать последовательность этих значений, и естественный способ сделать это - использовать rangeфункцию.

Карл Кнехтель
источник
5

Вы также можете:

newlist += mylist[i:i+22]
Кевин Постлуэйт
источник
2

Использовать это :

#Inputs
L1 = [1, 2]
L2 = [3,4,5]

#Code
L1+L2

#Output
[1, 2, 3, 4, 5]

Используя оператор (+), вы можете пропустить несколько операторов добавления и расширения всего в одной строке кода, и это действительно для более чем двух списков L1 + L2 + L3 + L4 ....... и т. Д.

Удачного обучения ... :)

Идриси_Касим
источник
1
mylist = [1,2,3]

def multiple_appends(listname, *element):
    listname.extend(element)

multiple_appends(mylist, 4, 5, "string", False)
print(mylist)

ВЫХОД:

[1, 2, 3, 4, 5, 'string', False]
Сауд Рехман
источник
1

использовать для цикла. как это:

for x in [1,2,7,8,9,10,13,14,19,20,21,22]:
    new_list.append(my_list[i + x])
Закизакибзр
источник