Python'da bir satıra birden çok öğe nasıl eklenir


91

Sahibim:

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()İfadeleri birkaç ifadeye dönüştürmek istedim .


Açıkçası, farklı sonuçlar alırsanız aynı olmaz.
JJJ

Bu geçersiz sözdizimidir.
TerryA

4
Nesnelerinizin liste olması amaçlandığını varsayarsak, kodunuz []yerine kullandığınız için geçerli Python değildir (). Lütfen gerçek çalışma kodunu gönderin.
BrenBarn

Yanıtlar:


227

Hayır. Tüm bir diziyi ekleme yöntemi list.extend().

>>> L = [1, 2]
>>> L.extend((3, 4, 5))
>>> L
[1, 2, 3, 4, 5]

"ekle", "ekleme" işlevi görür ancak listenin başına eklenir. Bir listenin başına birden çok değer eklemenin bir işlevi var mı?
serçe

@sparrow: Hayır. Bunun yerine dilim atayın.
Ignacio Vazquez-Abrams

ikinci girdinin bir liste olması mı gerekiyor yoksa her bir öğe virgülle ayrılmış mı?
Charlie Parker

@CharlieParker: Argüman yinelenebilir list.extend()olmalıdır.
Ignacio Vazquez-Abrams

5

Hayır.

Öncelikle append, bir işlevdir, bu yüzden yazamazsınız append[i+1:i+4]çünkü sekans olmayan bir şeyin bir dilimini almaya çalışıyorsunuz. ( append[i+1]Aynı sebepten ötürü onun bir elemanını da alamazsınız.) Bir fonksiyonu çağırdığınızda, argüman parantez içine alınır , yani yuvarlak olanlar:() .

İkincisi, yapmaya çalıştığınız şey, "bir sıra almak ve içindeki her öğeyi bu diğer dizinin sonuna, orijinal sıraya koymaktır". Heceleniyor extend. append"Bu şeyi çıkartacağım, listenin sonunda onu koymak tek bir öğe olarak , aynı zamanda bir liste olsa bile ". (Bir listenin bir tür sıra olduğunu hatırlayın.)

Ama sonra, bunun i+1:i+4sadece köşeli parantezlerin (bir diziden bir dilim almak için) ve parantezlerin (bir dictnesne oluşturmak için ) içinde görünen özel bir yapı olduğunu bilmeniz gerekir . Bunu bir işleve aktaramazsınız. Yani bununla yapamazsınız extend. Bu değerlerin bir dizisini yapmanız gerekir ve bunu yapmanın doğal yolu rangeişlevdir.



2

Bunu kullan :

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

#Code
L1+L2

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

(+) Operatörünü kullanarak birden fazla ekleme ve genişletme operatörünü tek bir kod satırında atlayabilirsiniz ve bu, L1 + L2 + L3 + L4 ....... vb. İle ikiden fazla liste için geçerlidir.

Mutlu Öğrenmeler ... :)


1
mylist = [1,2,3]

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

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

ÇIKTI:

[1, 2, 3, 4, 5, 'string', False]

1

döngü için kullanın. bunun gibi:

for x in [1,2,7,8,9,10,13,14,19,20,21,22]:
    new_list.append(my_list[i + x])
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.