【发布时间】:2017-09-19 14:19:36
【问题描述】:
我有两个列表:
list1 = ['abc-21-6/7', 'abc-56-9/10', 'def-89-7/3', 'hij-2-4/9', 'hij-75-1/7']
list2 = ['abc', 'hij']
我想对 list1 进行子集化,这样:1)只保留那些子字符串与 list2 中的元素匹配的元素,以及 2)对于满足第一个要求的重复元素,我只想随机保留一个重复项。对于这个具体的例子,我想产生如下结果:
['abc-21-6/7', 'hij-75-1/7']
我已经编写了代码来满足我的第一个要求:
[ele for ele in list1 for x in list2 if x in ele]
根据我的具体示例,返回以下内容:
['abc-21-6/7', 'abc-56-9/10', 'hij-2-4/9', 'hij-75-1/7']
但我被困在第二步 - 在重复子字符串的情况下如何随机保留一个元素。我想知道 random.choice 函数是否可以以某种方式合并到这个问题中?任何建议将不胜感激!
【问题讨论】:
-
list2事物总是在list1事物的开头吗?如果是这样,您可以对这两个列表进行排序并获得nlogn解决方案。否则你就是二次方。 -
是的,他们总是在这个特定问题的开始。感谢您的意见!