使用Python使用嵌套for循环从列表中计算T

时间:2017-04-04 04:29:51

标签: python loops

我正在尝试计算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)

5 个答案:

答案 0 :(得分:2)

将您的if条件更改为

if currentCharacter == 't' or currentCharacter =='T':

答案 1 :(得分:2)

你的if条件应该是:

if currentCharacter in ['t','T']:

答案 2 :(得分:0)

最好不要对字符进行迭代,而是将sumlen以及字符串方法lowercount一起使用:

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))相同。当它不是唯一的参数时,括号是必需的。

还有其他内置函数也最常用的是minmaxanyall。请注意,minmax会使用关键字参数key,以便max((a for a in b), key=len)返回最长的可迭代项。 heapq.nsmallestheapq.nlargest函数实际上是minmax的自然扩展。我非常喜欢anyall,特别是与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)