Como anexar vários itens em uma linha em Python

91

Eu tenho:

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

Eu queria fazer as newlist.append()declarações em algumas declarações.

tanto faz
fonte
Bem, obviamente não é o mesmo se você obter resultados diferentes.
JJJ de
Esta é uma sintaxe inválida.
TerryA de
4
Supondo que seus objetos sejam listas, seu código não é Python válido como você está usando em []vez de (). Por favor, poste código de trabalho real.
BrenBarn

Respostas:

225

Não. O método para anexar uma sequência inteira é list.extend().

>>> L = [1, 2]
>>> L.extend((3, 4, 5))
>>> L
[1, 2, 3, 4, 5]
Ignacio Vazquez-Abrams
fonte
'inserir' funciona como 'anexar', mas adiciona ao início da lista. Existe uma função para adicionar vários valores ao início de uma lista?
pardal
@sparrow: Não. Em vez disso, atribua uma fatia.
Ignacio Vazquez-Abrams
você precisa que a segunda entrada seja uma lista ou pode ser apenas cada elemento separado por vírgulas?
Charlie Parker de
@CharlieParker: O argumento para list.extend()deve ser iterável.
Ignacio Vazquez-Abrams
5

Não.

Em primeiro lugar, appendé uma função, então você não pode escrever append[i+1:i+4]porque está tentando obter um pedaço de algo que não é uma sequência. (Você também não pode obter um elemento dela: append[i+1]está errado pelo mesmo motivo.) Quando você chama uma função, o argumento vai entre parênteses , ou seja, os arredondados:() .

Em segundo lugar, o que você está tentando fazer é "pegar uma sequência e colocar todos os elementos nela no final dessa outra sequência, na ordem original". Isso é soletrado extend. appendé "pegar essa coisa e colocar no final da lista, como um único item , mesmo que também seja uma lista ". (Lembre-se de que uma lista é um tipo de sequência.)

Mas então, você precisa estar ciente de que i+1:i+4é uma construção especial que aparece apenas entre colchetes (para obter uma fatia de uma sequência) e colchetes (para criar um dictobjeto). Você não pode passá-lo para uma função. Então você não pode extendcom isso. Você precisa fazer uma sequência desses valores, e a maneira natural de fazer isso é com a rangefunção.

Karl Knechtel
fonte
5

Você também pode:

newlist += mylist[i:i+22]
Kevin Postlewaite
fonte
2

Usa isto :

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

#Code
L1+L2

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

Usando o operador (+), você pode pular os vários operadores acrescentar e estender em apenas uma linha de código e isso é válido para mais de duas listas por L1 + L2 + L3 + L4 ....... etc.

Feliz Aprendizagem ... :)

Idrisi_Kasim
fonte
1
mylist = [1,2,3]

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

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

RESULTADO:

[1, 2, 3, 4, 5, 'string', False]
Saoud Rehman
fonte