【发布时间】:2020-03-05 22:30:04
【问题描述】:
我有一个元组列表:
from itertools import product
l1 = list((product((0,1), repeat = n)))
对于 n=4,输出如下:
[(0, 0, 0, 0),
(0, 0, 0, 1),
(0, 0, 1, 0),
(0, 0, 1, 1),
(0, 1, 0, 0),
(0, 1, 0, 1),
(0, 1, 1, 0),
(0, 1, 1, 1),
(1, 0, 0, 0),
(1, 0, 0, 1),
(1, 0, 1, 0),
(1, 0, 1, 1),
(1, 1, 0, 0),
(1, 1, 0, 1),
(1, 1, 1, 0),
(1, 1, 1, 1)]
我想删除至少两个“1”相邻的元组,例如(0,1,1,0)。
我试过这个:
for i in l1:
for j in i:
if j==1 and j+1 == 1:
l1.remove(i)
我想这是行不通的,因为它需要 j+1 作为实际数字 + 1,就像如果 j=1 它需要 2 等等。
我应该做些什么不同的事情?
【问题讨论】:
-
l2 = [v for v in l1 if '11' not in ''.join(list(map(str, v)))]只要列表中没有11值 -
@ChatterOne 或
[v for v in l1 if '1, 1' not in str(v)].