检查字符串中的字符并输出单个消息

时间:2014-04-08 00:03:19

标签: list python-3.x iteration

a_lst = ['chair','gum','food','pizza']
letter = 'x'
for word in a_lst:
  if letter not in word:
    print ('no',letter)

  elif letter in word:
    print ('yes',letter)   

输出:

no x
no x
no x
no x

有没有办法可以迭代" a_lst"中的每个项目,检查每个项目是否有字母' x'。如果没有项目有字母' x'打印'没有x'就一次。如果一个单词包含字母' x',则打印'是x'只有一次。

我认为我的逻辑在某处存在缺陷。

有什么建议吗?

由于

3 个答案:

答案 0 :(得分:2)

你可以这样做:

letter = 'x'
result = [a for a in a_lst if letter in a]
if result:
    print('yes', letter)
else:
    print('no', letter)

<强>解释
如果result中的所有字词都没有该字母,则[]将为a_lst。当您在空列表上执行if result时,它会返回False,否则会返回True。条件语句相应地检查并打印输出语句。

在python中执行此操作的另一种方法是使用filter函数:

if filter(lambda x: letter in x, a_lst):
    print('yes', letter)
else:
    print('no', letter)

另一种方法是使用any

if any(letter in word for word in a_list):
    print('yes', letter)
else:
    print('no', letter)
如果任何单词都有字母,则

any(letter in word for word in a_list)返回True。

答案 1 :(得分:0)

你有没有试过这样的事情:

a = ['chair', 'gum', 'food', 'pizza']

letter = 'a'

result = 'no ' + letter
k = 0

for i in a:

    if letter in a[k]:
        print(a[k])
        result = 'yes ' + letter

    k += 1

print(result)

答案 2 :(得分:0)

您可以使用any功能!

if any(letter in word for word in a_lst):
    print('yes', letter)
else:
    print('no', letter)