首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >试图查看列表中的某一项是否在另一项中

试图查看列表中的某一项是否在另一项中
EN

Stack Overflow用户
提问于 2017-10-04 06:16:31
回答 4查看 114关注 0票数 2

所以这里我有两个列表

代码语言:javascript
运行
复制
cons=['qwe','wer','ert','rty','tyu','yui','uio','iop','asd','sdf','dfg',
      'fgh','ghj','hjk','jkl','zxc','xcv','cvb','vbn','bnm']

print([i for e in alphabet for i in cons if e in i])

字母表是用户输入。

例如,如果用户要键入qwe,则shell将打印'qwe','wer','ert','rty' (所有至少有一个字母相似的项),但如果输入的所有项都与此类似,则只希望它从con打印项目。例如打印“qwe”

我该怎么做?

编辑:为了更清楚地说明这一点,如果我要输入“qwer”,我希望输出为“qwe”和“wer”。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-10-04 06:28:46

代码语言:javascript
运行
复制
cons=['qwe','wer','ert','rty','tyu','yui','uio','iop','asd','sdf','dfg',
      'fgh','ghj','hjk','jkl','zxc','xcv','cvb','vbn','bnm']

UPDATE (基于OP注释)如果需要cons中的字符串为alphabet的精确匹配子字符串,则此代码只需检查来自cons的字符串是否为alphabet的子字符串(精确匹配),如果是,则包含它:

代码语言:javascript
运行
复制
print([sub for sub in cons if sub in alphabet])

对于情况:alphabet = 'qwer',ouput = ['qwe', 'wer']

但是,基于OP,该测试检查cons字符串中的所有字母是否存在于alphabet中(不一定按确切的顺序和频率)。这使用all()方法,如果传递的所有参数都是True,则返回True

代码语言:javascript
运行
复制
print([sub for sub in cons if all(let in alphabet for let in sub)])

说明:let in alphabet根据每个字母let是否在用户输入字符串alphabet中返回真假。这是对consfor let in sub子字符串中的每个字母执行的。因此,用户输入的每个字母都将被选中,并且只有当True字符串中的所有字母都在字母表中时,才能计算为sub。如果此检查计算结果为True,则结果中包含该子字符串并打印该子字符串。如果来自con的子字符串与用户输入alphabet的长度不同,则此函数可以工作。

如果字母= 'er',输出= [] (没有字符串包含alphabet中的所有字母)

如果字母= 'qwer',输出= ['qwe', 'wer']

票数 1
EN

Stack Overflow用户

发布于 2017-10-04 06:25:30

你找到了吗?:

代码语言:javascript
运行
复制
print ([x for x in cons  if sorted(list(x)) == sorted(list(alphabet))])

或者如果需要找到不完全的巧合

代码语言:javascript
运行
复制
print ([x for x in cons  if ''.join(sorted(list(alphabet))) in ''.join(sorted(list(x)))])
票数 1
EN

Stack Overflow用户

发布于 2017-10-04 06:33:22

如果您不关心列表中输出字符串的顺序,那么当然可以这样做:

代码语言:javascript
运行
复制
inputs = ['qwe', 'wer', 'ert', 'rty', 'tyu', 'yui', 'uio', 'iop', 'asd', 'sdf',
          'dfg', 'fgh', 'ghj', 'hjk', 'jkl', 'zxc', 'xcv', 'cvb', 'vbn', 'bnm']

def string_intersections(input_string):

    def intersect(string):
        input_letters = set(input_string)
        string_letters = set(string)
        has_intersection = input_letters == string_letters
        return has_intersection

    result = list(filter(intersect, inputs))
    return result

string_intersections("boo")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46558153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档