我需要比较两个列表并检查列表1中的字符串是否在列表2中

2024-06-08 09:05:04 发布

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

因此,我将有两个类似的列表:

list1 = ['p', '-x', 'q123', '-q3']
list2 = ['p56', '-p', '-q123', 'xr']

那么让我们假设

案例1:来自list1 == 'p'的项目我需要检查'-p'是否在列表2中,或者

案例2:来自list1== '-p'的项目我需要检查“p”是否在列表2中

然后,如果触发了这些情况中的任何一个,则从列表1中删除该元素,这样我只剩下只以负面形式出现或只以正面形式出现的元素。现在我可以做案例1,但我不知道如何做案例2

    
list1 = ['p', '-x', 'q123', '-q3']
list2 = ['p56', '-p', '-q123', 'xr']
new_list1 = list1.copy()
for y in list1:
    for x in list2:
        if x == '-'+y:
            new_list1.remove(y)
      

对于这两个列表,只有当我处理这两种情况时,才会留下它们

new_list1 = ['-q3']

现在我明白了:

new_list1 = ['-x', '-q3']

Tags: 项目in元素列表newfor情况形式
2条回答
list1 = ['p', '-x', 'q123', '-q3']
list2 = ['p56', '-p', '-q123', 'xr']
    new_list1 = list1.copy()
    for y in list1:
        for x in list2:
            if y == '-'+x:
                new_list1.append(x)` 

事实上你很接近。。试试这个并使用append函数。如果成功了,别忘了投票

def toggle(x):
    if x[0] == '-':
        return x[1:]
    else:
        return '-'+x

list1 = ['p', '-x', 'q123', '-q3']
list2 = ['p56', '-p', '-q123', 'x']
new_list1 = list1.copy()
for y in list1:
    for x in list2:
        if x == toggle(y):
            new_list1.remove(y)

这将使您new_list1 == ['-q3']

更省时的方法:

list1 = ['p', '-x', 'q123', '-q3']
list2 = ['p56', '-p', '-q123', 'x']
toggled_list2 = set(toggle(y) for y in list2)
new_list2 = list(set(list1).difference(toggled_list2))

# new_list2 == ['-q3']

相关问题 更多 >