检查一个元素是否存在于一个列表中的列表中

2024-09-24 22:23:00 发布

您现在位置:Python中文网/ 问答频道 /正文

group函数从另一个大组中获取pp。我想让程序说如果pp中存在rr中的任何元素,我想拒绝它并再次调用pick函数。如果不在rr列表中添加pp。在

我有两张这样的单子:

rr = [[1,2], [3,4], [5,6], [7,8]]
pp = [[7,9], [10, 11]]

我有这个功能:

^{pr2}$

这里rr包含{}中存在的7,必须拒绝。但问题是它仍然被接受。并且rr仍然被这个错误的pp所附加。在

如果我这样做:

for i in pp:
    for j in i:
        for k in rr:
            for h in k:
                while h == j:
                    pp = group(seq, 2)
                rr.append(pp)
    else:
        rr.append(pp)

它仍然会在没有任何输出的情况下永远运行。在

这是我的解决方案,有效,但我无法回答:

rr1 = [[1,2], [3,4], [5,6], [7,8]]
pp1 = [[7,9], [10, 11]]



# if any(p in rr for p in pp):
#    print("cant append")  #this will send it back to the function to pick up new pp
# elif any((i in p for i in range(len(pp))) in (j in rr for j in range(len(rr))) for p in pp ):
#     print("cant append")
# else:
#      rr.extend(pp)



def is_true(pp , rr):
    for i in pp:
        for j in rr:
            if any(p in j for p in i):
                return False 
    return True



def ext (pp , rr , tt ):
    if tt == True:
        rr.extend(pp)
    else:
        print("cant append")



tt = is_true(pp1, rr1)
ext(pp1, rr1, tt)
print(rr1)

Tags: 函数inforifrrgroupanyelse
3条回答

如果从两个列表签入单个整数,可以执行以下操作:

from itertools import chain

def are_common_elements(rr, qq):
    return bool(set(chain(*rr))  & set(chain(*qq)))

我不太清楚你在找什么。
但也许这是你可以利用的东西:

import itertools

rr = [[1,2], [3,4], [5,6], [7,8]]
pp = [[7,9], [10, 11]]  
result = []
ignore = []

for item in itertools.chain.from_iterable(pp):
    for pair in rr:
        if item in pair:
            print('Yepp, {} is in {}. Ignoring!'.format(item, pair))
            ignore.append(pair)
        elif not pair in result and pair not in ignore:
            result.append(pair)

print('Result: {}'.format(result))

itertools只是将“检查列表”变平,因此更容易处理数字。然后简单地迭代这些并检查rr对包含无效数字。将这些无效对存储在ignore中。在

如果您不想忽略一对,只需跳过忽略部分。
但它将确保[7, 8]不属于您的结果中-例如,如果您的pp看起来像这样:pp = [[7,9], [8, 11]]

另一种方法是[免责声明:由于其他人我不完全确定我是否正确理解了您的问题,如果您不想回答,请留言]。在

如果rr中的任何值也出现在pp中,pp将不被追加,否则{}将被追加。在

rr = [[1,2], [3,4], [5,6], [7,8]]
pp = [[7,9], [10, 11]]
do_append = 1
for rr_sublist in rr:
    for j in range(len(rr_sublist)):
        for pp_sublist in pp:
            for i in range(len(pp_sublist)):
                if pp_sublist[i] == rr_sublist[j]:
                    print("duplicate element found")
                    do_append = 0
if do_append:
    rr.append(pp)
print(rr)

输出

^{pr2}$

相关问题 更多 >