如何在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

Answers:


225

否。附加整个序列的方法是list.extend()

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

“插入”用作“附加”,但添加到列表的开头。是否有将多个值添加到列表开头的功能?
麻雀

@sparrow:不,而是切片分配。
Ignacio Vazquez-Abrams

您是否需要第二个输入作为列表,还是仅将每个元素用逗号分隔?
查理·帕克

@CharlieParker:的参数list.extend()必须是可迭代的。
伊格纳西奥·巴斯克斯

5

没有。

首先,append是一个函数,因此您无法编写代码,append[i+1:i+4]因为您试图获取不是序列的内容。(append[i+1]由于相同的原因,您也无法得到它的元素:是错误的。)调用函数时,参数放在括号中,即圆括号()

其次,您要执行的操作是“采用一个序列,并将每个元素按原始顺序放在该另一个序列的末尾”。这是拼写的extendappend是“拿这个东西,即使它也是一个列表也将其作为单个项目放在列表的末尾”。(回想一下列表是一种序列。)

但是,您需要意识到这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 .... etc等两个以上的列表有效。

快乐学习... :)


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]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.