删除值列表python

时间:2017-05-17 15:52:51

标签: python list

我想将列表中的值相乘并删除一个值,代码如下:

list1 = [1,2,3,4]
times = 3
start = [1]
visited = [start]
list2 = [n for n in list1 * times]
list2 = 
[1,2,3,4,1,2,3,4,1,2,3,4]

我希望list2成为list1的3倍,但删除值start,当我这样做时:

list2 = [(n for n in list1 * times) - start]

给出错误,

list2 = [(n for n in list1 * times) != start]

删除所有值start,我不希望这样。

我怎么能这样做,列表乘以一个数字,然后只删除一个值?结果将是:

list2 = [2,3,4,1,2,3,4,1,2,3,4]

非常感谢!

**还有一件事,在这种情况下[start]是1,但它可以列在列表中的任何数字。 谢谢!

5 个答案:

答案 0 :(得分:2)

您可以按如下方式获取l2:

l2 = (l1 * 3)[1:]

答案 1 :(得分:1)

使用普通乘法运算符,然后使用list.remove方法:

>>> list1 = [1,2,3,4]
>>> times = 3
>>> start = 1

>>> list2 = list1 * times
>>> list2.remove(start)

>>> list2
[2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

答案 2 :(得分:1)

从变量start

中设置的结果列表中删除第一个值
[n for i, n in enumerate(list1*times) if (i < len(list1) and n not in start) or (i >= len(list1))]

start = [1]

是结果

[2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

start = [2]

是结果

[1, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

答案 3 :(得分:0)

不确定这是否是你想要的

list1 = [1,2,3,4]

list2 = list1[1:] + list1*2

print (list2)

答案 4 :(得分:-1)

这应该可以解决问题

>>>list1 = [1, 2, 3, 4]
>>>list2 = list1 + list1 + list1
>>>list2
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
>>>list2.pop(0)
1
>>>list2
[2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4