所以这里有两个列表
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'
(所有至少有一个字母相似的项目)但是我只希望它打印来自缺点的项目输入中的项目与此类似。例如,打印'qwe'
我该怎么做?
编辑:为了更清楚,如果我输入'qwer',我希望输出为'qwe'和'wer'答案 0 :(得分:1)
print ([x for x in cons if sorted(list(x)) == sorted(list(alphabet))])
或者如果需要找到不完整的巧合
print ([x for x in cons if ''.join(sorted(list(alphabet))) in ''.join(sorted(list(x)))])
答案 1 :(得分:1)
cons=['qwe','wer','ert','rty','tyu','yui','uio','iop','asd','sdf','dfg',
'fgh','ghj','hjk','jkl','zxc','xcv','cvb','vbn','bnm']
更新(基于OP评论)如果您需要cons
中的字符串与alphabet
的子字符串完全匹配,那么此代码只需检查来自cons
的字符串是否为alphabet
的子字符串(完全匹配),如果是,则包括它:
print([sub for sub in cons if sub in alphabet])
案例:alphabet
= 'qwer'
,ouput = ['qwe', 'wer']
但是,根据OP,此测试会检查cons
字符串中的所有字母是否都存在于alphabet
中(不一定按照确切的顺序和频率)。如果传递的所有参数都是all()
,则使用True
方法返回True
。
print([sub for sub in cons if all(let in alphabet for let in sub)])
说明:let in alphabet
根据每个字母let
是否在用户输入字符串alphabet
中返回True或False。对cons
,for let in sub
的子字符串中的每个字母执行此操作。因此,如果来自True
字符串的所有字母都在字母表中,则将检查来自用户输入的每个字母并仅评估为sub
。如果此检查的计算结果为True,则结果中将包含子字符串并打印。如果con
的子字符串与用户输入alphabet
的长度不同,则此函数有效。
如果alphabet = 'er'
,则输出= []
(没有字符串包含alphabet
中的所有字母)
如果alphabet = 'qwer'
,则输出= ['qwe', 'wer']
答案 2 :(得分:0)
如果您不关心列表中输出字符串的顺序,那么您当然可以这样做:
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")
答案 3 :(得分:0)
尝试使用set
:
cons=['qwe','wer','ert','rty','tyu','yui','uio','iop','asd','sdf','dfg',
'fgh','ghj','hjk','jkl','zxc','xcv','cvb','vbn','bnm']
alphabet = "weq"
print([c for c in cons if set(alphabet).issubset(set(c))]) # output will be ['qwe']