我需要知道字母b(最好是大写和小写)是否包含在列表中。
我的代码:
List1=['apple', 'banana', 'Baboon', 'Charlie']
if 'b' in List1 or 'B' in List1:
count_low = List1.count('b')
count_high = List1.count('B')
count_total = count_low + count_high
print "The letter b appears:", count_total, "times."
else:
print "it did not work"
答案 0 :(得分:1)
您需要循环浏览列表并浏览每个项目,如下所示:
mycount = 0
for item in List1:
mycount = mycount + item.lower().count('b')
if mycount == 0:
print "It did not work"
else:
print "The letter b appears:", mycount, "times"
由于您尝试在列表中计算“b”而不是每个字符串,因此您的代码无效。
或者作为列表理解:
mycount = sum(item.lower().count('b') for item in List1)
答案 1 :(得分:0)
所以问题是为什么这不起作用?
你的清单包含一个大字符串,"苹果,香蕉,狒狒,查理"。
在元素之间添加单引号。
答案 2 :(得分:0)
根据您的最新评论,代码可以重写为:
count_total="".join(List1).lower().count('b')
if count_total:
print "The letter b appears:", count_total, "times."
else:
print "it did not work"
你基本上加入列表中的所有字符串,然后创建一个长字符串,然后小写它(因为你不关心大小写)并搜索小写字母(b)。对count_total的测试有效,因为如果不是零则它会变为True。
答案 3 :(得分:0)
生成器表达式(element.lower().count('b') for element in List1)
生成每个元素的长度。将其传递给sum()
即可将其添加。
List1 = ['apple', 'banana', 'Baboon', 'Charlie']
num_times = sum(element.lower().count('b')
for element in List1)
time_plural = "time" if num_times == 1 else "times"
print("b occurs %d %s"
% (num_times, time_plural))
输出:
b occurs 3 times
如果您想要列表中每个元素的计数,请改用列表推导。然后,您可以print
此列表或将其传递给sum()
。
List1 = ['apple', 'banana', 'Baboon', 'Charlie']
num_times = [element.lower().count('b')
for element in List1]
print("Occurrences of b:")
print(num_times)
print("Total: %s" % sum(b))
输出:
Occurrences of b:
[0, 1, 2, 0]
Total: 3