我试图找出一些数字序列是否在列表中。如果是这样,则应从列表中删除此元组。数字必须相互连接。
示例:
元组列表:
list_1 = [(), (1,), (3,), (2,), (4,), (1, 3), (1, 2), (1, 4), (3, 2), (3, 4), (2, 4), (1, 3, 2), (1, 3, 4), (1, 2, 4), (3, 2, 4), (1, 3, 2, 4)]
和第二个清单:
list_2 = [1,3,2,4]
在这种情况下,应删除(1, 3), (3, 2), (2, 4), (1, 3, 2), (3, 2, 4), (1, 3, 2, 4), (1, 3, 4), (1, 2, 4)
中的元素list_1
,因为它们包含list_2
中连续的数字(不一定全部!)。
我想检查列表中的元素是否
我试过这样的事情:
for i in range(len(lista)):
teste = []
for j in range(len(lista[i])):
for k in stuff:
if len(lista[i]) >= 2:
if lista[i][j] == k:
teste.append(k)
if len(teste) == 2:
lista.remove(lista[i])
teste=[]
else:
pass
使用此输出:
if len(lista[i]) >= 2:
IndexError: list index out of range
我试图检查一个数字,将它附加到列表中检查下一个数字,如果它也被附加,我将删除相应的元组。
答案 0 :(得分:3)
在这里,我认为这有效。
如果要删除空白集,只需将其删除即可,但是您可以定义匹配项。我添加了评论代码来做到这一点。
根据您的评论修正
print("List 1:", list_1)
print("List 2:", list_2)
removeElements = []
for k in range(len(list_1)):
#if len(list_1[k]) == 0:
# removeElements.append(k)
count = 0
for i in range(0, len(list_2)):
for j in range(0, len(list_1[k])):
if len(list_2) <= i + j:
break
count = count + 1
if list_1[k][j] != list_2[i + j]:
count = 0
if count == 2:
print("removing", list_1[k])
removeElements.append(k)
removeElements = sorted(set(removeElements))
for i in range(len(removeElements)):
list_1.pop(removeElements[i] - i)
print("List_1:", list_1)
答案 1 :(得分:0)
如果您从old python example抓取window
食谱,这就变得简单了:
from itertools import islice
def window(seq, n=2):
"Returns a sliding window (of width n) over data from the iterable"
" s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ... "
it = iter(seq)
result = tuple(islice(it, n))
if len(result) == n:
yield result
for elem in it:
result = result[1:] + (elem,)
yield result
然后,您可以保留list_2
[t for t in list_1 if t not in window(list_2, len(t))]
但是,您似乎有零或一个元素的特殊套管元组,因此您需要更改过滤器
[t for t in list_1 if len(t) < 2 or t not in window(list_2, len(t))]
答案 2 :(得分:0)
这是一种方法:
list_1 = [(), (1,), (1,2), (1,4)]
y = [list(i) for i in list_1]
list_2=[3,1,2,4]
x = [list_2[0:2], list_2[1:3], list_2[2:4]]
new_list_1 = [tuple(i) for i in y if i not in x[0:]]
输出:
[(), (1,), (1, 4)]