我想将列表中的值相乘并删除一个值,代码如下:
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,但它可以列在列表中的任何数字。 谢谢!
答案 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