假设您有一个列表,并且您希望列表中的每个项目都有两个“a”,无论情况如何,还有两个“g”,无论如何都是如此。你怎么能阻止python打印“aaGa”,aGGG“等,但打印做的所有其他项目有两个”a“和”g“?
更新: 以下是当前正在打印的内容的示例:
['aAaA', 'aAaG', 'aAAG', 'aAGG', 'aAaA', 'aAag', 'aAAG', 'aAGg', 'aAaa', 'aAaG', 'aAaG', 'aAGG', 'aAaa', 'aAag', 'aAaG', 'aAGg', 'aAaA', 'aAaG', 'aAAG', 'aAGG', 'aAaA', 'aAag', 'aAAG', 'aAGg', 'aAaa', 'aAaG', 'aAaG', 'aAGG', 'aAaa', 'aAag', 'aAaG', 'aAGg', 'aAaA', 'aAaG', 'aAAG', 'aAGG', 'aAaA', 'aAag', 'aAAG', 'aAGg', 'aAaa', 'aAaG', 'aAaG', 'aAGG', 'aAaa', 'aAag', 'aAaG', 'aAGg', 'aAaA']
以下是 应该是什么样子的例子:
['aaGG', 'Aagg', 'AAGG', 'AaGG', 'aaGg', 'AAGg', 'AAgg', etc.]
答案 0 :(得分:5)
word_list = ["AAgg", "aGGG", "AgaG", "gAaA"]
for idx in word_list:
if idx.lower().count("a") == idx.lower().count("g") == 2:
print idx
修改强>
如果您希望将结果恢复为编辑中的列表,只需将其全部放在一行
print [idx for idx in word_list if idx.lower().count("a") == idx.lower().count("g") == 2]
答案 1 :(得分:0)
我会使用正则表达式。这将打印列表中包含至少2 g
和2 a
的所有项目。
[i for i in lst if re.search(r'(?i)^(?=.*?a.*?a)(?=.*?g.*?g)', i)]
示例:
>>> lst = ["aaGa", "aGGG", 'aagg', 'gagar', 'Gttgata', 'GGGa', 'Agaa']
>>> [i for i in lst if re.search(r'(?i)^(?=.*?a.*?a)(?=.*?g.*?g)', i)]
['aagg', 'gagar', 'Gttgata']
答案 2 :(得分:0)
print [i for i in test_list if re.findall(r"^(?=.*a.*a)(?=.*g.*g).*$",i)]
您可以在此使用re
模块