我正在尝试计算T的数量,无论来自提供的列表的情况如何,但是代码继续计算每个字符并返回值46,而不是仅计算T并返回值6.我也需要它来打印T发生的字符串。
givenStrings = ["Taylor Swift", "Twenty Two", "Georgia Tech"]
count =0
numTs = 0
for currentString in givenStrings:
for currentCharacter in currentString:
if currentCharacter == 't' or 'T':
numTs+=1
count = numTs + len(currentString)
print(count, currentString)
答案 0 :(得分:2)
将您的if条件更改为
if currentCharacter == 't' or currentCharacter =='T':
答案 1 :(得分:2)
你的if条件应该是:
if currentCharacter in ['t','T']:
答案 2 :(得分:0)
最好不要对字符进行迭代,而是将sum
与len
以及字符串方法lower
和count
一起使用:
count = sum(len(currentString) for currentString in givenStrings)
numTs = sum(currentString.lower().count('t') for currentString in givenStrings)
sum
函数可以进行任何迭代。总结。
第一个将len
应用于列表中的每个项目。哪个sum
消耗产生总数。
第二种方法使用lower
方法将每个字符串转换为小写,然后调用count
方法以获取字符串't'
的出现次数。哪个sum
消耗产生总数。
在每个用法中,参数是生成器表达式(a for b in c)
,当它是函数的唯一参数时,可以省略括号。 sum(a for b in c)
与sum((a for b in c))
相同。当它不是唯一的参数时,括号是必需的。
还有其他内置函数也最常用的是min
,max
,any
,all
。请注意,min
和max
会使用关键字参数key
,以便max((a for a in b), key=len)
返回最长的可迭代项。 heapq.nsmallest
和heapq.nlargest
函数实际上是min
和max
的自然扩展。我非常喜欢any
和all
,特别是与not
结合使用时。
答案 3 :(得分:0)
更简单的方法是将数组元素连接成一个字符串,使每个字符大写,然后计算大写T
字符
givenStrings = ["Taylor Swift", "Twenty Two", "Georgia Tech"]
print [x.upper() for x in ''.join(givenStrings)].count('T')
> 6
答案 4 :(得分:-1)
我可能会这样做。忘记嵌套循环
counts = map(lambda x: (x, x.lower().count('t'), ) , givenStrings)
print(list(counts))
numTs = sum(x[1] for x in counts)