Pythonで1行に複数のアイテムを追加する方法


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 2013年

これは無効な構文です。
TerryA 2013年

4
オブジェクトがリストであることを想定している場合、の[]代わりに使用しているため、コードは有効なPythonではありません()。実際に機能するコードを投稿してください。
ブレンバーン2013年

回答:


225

いいえlist.extend()。シーケンス全体を追加する方法はです。

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

「挿入」は「追加」として機能しますが、リストの先頭に追加されます。リストの先頭に複数の値を追加する機能はありますか?
すずめ

@sparrow:いいえ。代わりにスライスを割り当てます。
Ignacio Vazquez-Abrams

2番目の入力をリストにする必要がありますか、それとも単に各要素をコンマで区切ったものにすることができますか?
チャーリーパーカー、

@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]

(+)演算子を使用すると、1行のコードで複数の追加および拡張演算子をスキップできます。これは、L1 + L2 + L3 + L4 .......などの2つ以上のリストに有効です。

ハッピーラーニング... :)


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]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.