给定一个项目,如何计算列表中所述项目的出现次数,如果没有达到某些规定,则不打印该项目?

时间:2015-07-22 18:31:45

标签: python list

假设您有一个列表,并且您希望列表中的每个项目都有两个“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.]

3 个答案:

答案 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模块