我有两个清单:
string1Elements = ['down', 'down', 'down', 'down']
string2Elements = ['down', 'down', 'right', 'down']
我想要形成两个列表共有的元素的列表,包括重复的元素。我想要的结果如下:
^{pr2}$我想到的匹配方式如下:
0:状态如下:
string1Elements = ['down', 'down', 'down', 'down']
string2Elements = ['down', 'down', 'right', 'down']
两个列表大小相同,因此任意选择一个。如果列表的大小不同,则会选择较短的列表。在
1:获取string1Elements
(所选列表)的第一个元素。此元素是否存在于string2Elements
中?如果是,则将其附加到匹配列表中,并将其从string1Elements
和string2Elements
中删除。在
string1Elements = ['down', 'down', 'down']
string2Elements = ['down', 'right', 'down']
matches = ['down']
2:获取string1Elements
的第一个元素。此元素是否存在于string2Elements
中?如果是,则将其附加到匹配列表中,并从string1Elements
和string2Elements
中删除它。在
string1Elements = ['down', 'down']
string2Elements = ['right', 'down']
matches = ['down', 'down']
3:获取string1Elements
的第一个元素。此元素是否存在于string2Elements
中?如果是,则将其附加到匹配列表中,并从string1Elements
和string2Elements
中删除它。在
string1Elements = ['down']
string2Elements = ['right']
matches = ['down', 'down', 'down']
4:获取string1Elements
的第一个元素。此元素是否存在于string2Elements
中?如果是,则将其附加到匹配列表中,并从string1Elements
和string2Elements
中删除它。在
string1Elements = ['down']
string2Elements = ['right']
matches = ['down', 'down', 'down']
5:所有元素都检查过了。在
上面的过程只是解释如何处理重复元素。实际上我不想更改列表string1Elements
和{
我不认为集合可以以明显的方式使用,因为有重复的元素:
matches = list(set(string2Elements).intersection(string1Elements))
我用列表理解法做了一个快速测试:
matches = [element for element in string1Elements if element in string2Elements]
这两种方法都不够。我如何按照我描述的方式实现匹配?在
您可以系统地从一个列表中弹出,如果它们匹配,则将其附加到结果列表中。因为您是从列表中弹出的,所以它不会与list1中的一个元素匹配到list2中的五个元素,因为它将被弹出。示例函数:
用法:
^{pr2}$这与OP在问题中解释的方法完全相同,只是它只从较短的列表中删除元素。
在多个列表上工作的一个可以实现如下所示
相关问题 更多 >
编程相关推荐