100

我有:

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()陈述变成几个陈述。

4

7 回答 7

256

不,附加整个序列的方法是list.extend()

>>> L = [1, 2]
>>> L.extend((3, 4, 5))
>>> L
[1, 2, 3, 4, 5]
于 2013-05-18T06:43:36.213 回答
5

您还可以:

newlist += mylist[i:i+22]
于 2014-02-28T00:16:25.443 回答
5

不。

首先,append是一个函数,所以你不能写append[i+1:i+4],因为你试图得到一个不是序列的东西的一部分。(你也不能得到它的一个元素:append[i+1]由于同样的原因是错误的。)当你调用一个函数时,参数放在括号中,即圆形的:()

其次,您要做的是“获取一个序列,并将其中的每个元素按原始顺序放在另一个序列的末尾”。是这样写的extendappend就是“拿这个东西,把它放在列表的末尾,作为一个单独的项目即使它也是一个列表”。(回想一下,列表是一种序列。)

但是,您需要注意这i+1:i+4是一个特殊的构造,它只出现在方括号(从序列中获取切片)和大括号(创建dict对象)内。您不能将其传递给函数。所以你不能extend这样。您需要创建这些值的序列,而自然的方法是使用range函数。

于 2013-05-18T07:11:57.120 回答
3
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]
于 2019-03-21T10:11:05.810 回答
2

用这个 :

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

#Code
L1+L2

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

通过使用 (+) 运算符,您可以在一行代码中跳过多个附加和扩展运算符,这对 L1+L2+L3+L4.......等的两个以上列表有效。

快乐学习...:)

于 2019-11-08T19:36:04.743 回答
1

使用 for 循环。像这样:

for x in [1,2,7,8,9,10,13,14,19,20,21,22]:
    new_list.append(my_list[i + x])
于 2020-10-24T10:55:13.960 回答
0

如果要添加相同的元素,则可以执行以下操作:

["a"]*2
>>> ['a', 'a']
于 2022-02-18T03:41:10.197 回答