繁体   English   中英

Python:仅当多个元素不在另一个列表中时才附加到列表

Python: Append to list only if multiple elements are not in another list

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试基于元素子集创建一个新列表。 选择标准是部分字符串。 我有一个工作示例,但我试图以更简洁的方式对其进行编码,以便选择标准本身就是一个元素列表。

仅当任何源列表子元素中不存在多个子字符串时,我才希望将源列表元素(它本身就是一个列表)添加到新列表中。

这是我的工作示例代码:

links = [['abc', 'def'], ['ghi', 'jkl'], ['def', 'xyz']]

sublinks = []
for link in links:
    if ((('ab' not in link[0]) and ('ab' not in link[1])) and\
        (('xy' not in link[0]) and ('xy' not in link[1]))):
        sublinks.append(link)

links列表中,这实现了仅附加元素['ghi', 'jkl']因为它是源列表中唯一通过不包含任何子元素中的abxy的元素的匹配条件的元素-元素。

示例代码显示了我试图实现的逻辑,但我更想将abxy放入一个列表中,以便我可以指定任意数量的匹配条件。 源列表(具有两个元素的列表)的格式将保持不变。

我花了几个小时试图回答我自己的问题,搜索 stackoverflow,试图自己弄清楚,但我还没有取得任何成功,非常感谢任何帮助! 谢谢

2 个回复

这是一个单衬..只有在我正确理解问题的情况下。 请使用更大的“链接”列表来测试这一点。

links = [['abc', 'def'], ['ghi', 'jkl'], ['def', 'xyz']]

FinalList = list(filter(lambda x: not any(['ab' in i for i in x]) and not any(['xy' in i for i in x]), links))
print(FinalList)

给出输出为

[['ghi', 'jkl']]

编辑

在我意识到您想要列表中的否定项后,我更改了代码。 以下也将起作用。 在下面的代码中,最重要的列表是要过滤的“链接”和包含要避免的术语的“Negation_List”。

links = [['abc', 'def'], ['ghi', 'jkl'], ['mno','pqr'],['mno','ghi'],['pqr','jkl'], ['def', 'xyz']]
Negation_List = ['ab','xy','mn','pq']
FinalList = list(filter(lambda x: all(not any([eachNegation in i for i in x]) for eachNegation in Negation_List), links))
print(FinalList)

给出输出为

[['ghi', 'jkl']]

首先,创建一个包含条件的新列表:

criteria_list = ['ab', 'xy']

用这个替换你的 for 循环:

for link in links:
    in_list = True
    for criteria_item in criteria_list:
        for item in link:
            if criteria_item in item:
                in_list = False
            
    if in_list:
        sublinks.append(link)

这将循环遍历“链接”列表中的每个子元素,根据criteria_list 中的所有项目检查这些元素中的每一个,如果没有任何项目在criteria_list 中,则仅将整个子列表添加到子链接。

2 确定列表中的哪些元素不在另一个列表中

我有两个IList<CustomObject> ,其中CustomObject有一个Name属性,它是一个string 。 调用第一个set ,第二个subset 。 set包含我刚刚在多选列表框中向用户显示的内容列表。 用户选择的那些已放置在subset (因此subset保 ...

2012-06-06 19:58:11 2 120   c#/ ilist
3 如果该元素不在另一个列表中,则如何删除该元素

基本上,我有一个公司列表(标记为列表A),还有一个很大的清单(标记为列表B)。 我想查询列表A的元素是否也在列表B中。某些相同的公司存在细微差异,因此我必须使用模糊匹配。 幸运的是,我已经成功地找到了A中的元素,但B中却没有。但是我不知道如何在不引起混乱的情况下将其删除。 (似乎很容易引起 ...

2019-10-23 06:56:09 1 48   r/ list
4 将列表元素附加到另一个列表 (Python)

我编写了一些代码,其中包含新用户和当前用户的列表,并检查用户名是否可用。 如果不可用,它会输出一条消息说这样,否则输出一条消息说它可用。 在此之后,我试图将 new_users 列表的元素附加到 current_users 中,条件是它不存在于那里。 然后我想打印 current_users 列表以 ...

7 在python中以一对一的方式将1个列表中的元素附加到另一个列表的嵌套元素

我有两个列表,我想创建新列表,其中列表 1 中的元素几乎以一对一的方式附加到列表 2 中的元素。 我的名单是休闲的, Id 喜欢将 list1 中的第一个元素附加到 list2 中第一个嵌套列表中的元素,类似地将 list1 中的第二个元素附加到 list2 中第二个元素中的每个元素。 结 ...

8 选择实体包含列表的位置,其中元素不在另一个列表中

我的问题基于另一个问题: 选择实体包含列表的地方,该列表就是另一个列表的子集 但是我想做的是: 我正在编写JPQL查询,并且遇到以下情况。 我有一个Question实体,其中包含标签列表。 我想选择列表中不包含任何给定标签的所有问题。 如何使用JPA做到这一点? 我想做类 ...

2013-02-08 00:10:24 1 2091   jpa/ jpql
10 LINQ:如何将元素列表附加到另一个列表中

我有以下课程 给定List<Element> ,如何使用LINQ查找List<Element>中所有Ints的List<Element> ? 我可以使用以下代码 但它是如此丑陋和冗长的啰嗦,我想每次写它时都会呕吐。 有任何想法吗? ...

2010-01-14 05:59:05 3 4693   c#/ linq
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM