检查列表最后几个位置中的每个元素是否在另一个列表中

时间:2018-11-14 23:25:06

标签: python python-3.x

我环顾四周,没有发现一个问题,询问的是列表中的最后一项而不是整个列表。 如果列表中的最后一项在另一个列表中,我将尝试做某事。

pile = [2,6,9]

another = [1,5,6,5,4,1,6,7]

if another[-1:-4:-1] in pile:  #if one of the last 3 items in 'another' are in the list 'pile' then print yes

    print("yes")
else:

    print("no")

我尝试使用切片,但我认为这样做不是正确的方法,我是新手。  我正在尝试使程序获取列表“另一个”中的最后3个项目,并且如果最后3个元素之一位于另一个列表“ pile”中,则显示为yes。 在这种情况下,6位于'another [-1:-4:-1]'和'pile'中,但我不知道如何在代码中编写使其起作用

我用这个基本示例进行了解释,但是在我编写的程序中,新项目被追加到“另一个”列表上,因此最后一个项目的索引将发生变化。我只需要检查最后一个项目,而不需要检查其余项目。

2 个答案:

答案 0 :(得分:1)

您可以使用sets,它可以测试交叉点:

if set(pile).intersection(set(another[-3:])):
    print("yes")
else:
    print("no")

答案 1 :(得分:0)

好吧,我建议您切出列表的最后三个元素,并逐一检查它们。这是解决此问题的最简单方法之一,也是继续学习的好方法(尽管您仍在学习如何使用Python玩游戏)。

这就是我可能要做的。

checker = True  ## variable to keep track of whether or not was 'yes' printed and prevent re-printing of 'yes' in cases when multiple elements satisfy the condition

for num in another[-4:]:
    if num in pile and checker:
        print ('yes')
        checker = False

if checker:
    print ('no')