Як додати кілька елементів в один рядок у 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]

Функція "вставити" функціонує як "додати", але додає на початок списку. Чи існує функція додавання кількох значень на початок списку?
горобець

@sparrow: Ні. Натомість призначити фрагмент.
Ігнасіо Васкес-Абрамс

вам потрібно, щоб другий вхід був списком, чи це може бути просто кожен елемент, розділений комами?
Чарлі Паркер,

@CharlieParker: Аргумент list.extend()повинен бути ітерабельним.
Ігнасіо Васкес-Абрамс

5

Немає.

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

По-друге, те, що ви намагаєтеся зробити, це "взяти послідовність і розмістити кожен елемент у ній в кінці цієї іншої послідовності, в початковому порядку". Це пишеться extend. appendє "візьміть цю річ і поставте її в кінці списку як один елемент , навіть якщо це також список ". (Нагадаємо, що список - це свого роду послідовність.)

Але тоді вам слід знати, що i+1:i+4це спеціальна конструкція, яка з’являється лише всередині квадратних дужок (щоб отримати зріз із послідовності) та фігурних дужок (для створення dictоб’єкта). Ви не можете передати його функції. Тож extendіз цим не можна . Вам потрібно скласти послідовність цих значень, і природний спосіб зробити це за допомогою rangeфункції.



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])
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.