追加后如何打印一次列表?

How to print out list one single time after append?

list = ('S', 'S', 'C', 'R', 'C', 'R', 'S', 'C', 'C', 'R', 'S', 'C', 'S', 'S', 'R', 'C', 'R', 'C', 'C', 'S', 'R')
list1 = []
for i in list:
    if i == 'C':
        list1.append('C')
        print(list1)

所以我试图创建一个空列表并仅将 'C' 添加到列表 1 中。并计算list1中有多少'C'。迭代列表和 len(list1) 但这会给我所有的 len 我的迭代......有什么更简单的方法来计算 list1 中只有 'C' 的数字?没有迭代? 提前致谢。

因此,如果您只是想计算有多少个“c”,您可以将代码编辑为:

for i in list:
    if i == 'C':
        list1.append('C')
        x = x + 1 
print(x)

使用集合计数器https://docs.python.org/3/library/collections.html#collections.Counter来计算不迭代的“C”的数量:

 from collections import Counter
 list = ('S', 'S', 'C', 'R', 'C', 'R', 'S', 'C', 'C', 'R', 'S', 'C', 'S', 'S', 'R', 'C', 'R', 'C', 'C', 'S', 'R')
 c = Counter(list)
 print(c)
print(c["C"])

结果:

Counter({'C': 8, 'S': 7, 'R': 6})
8

你有很多方法可以解决这个问题:

经典循环

my_list = ('S', 'S', 'C', 'R', 'C', 'R', 'S', 'C', 'C', 'R', 'S', 'C', 'S', 'S', 'R', 'C', 'R', 'C', 'C', 'S', 'R')

i = 0
for letter in my_list:
    if letter == 'C':
        i+=1
print(i)

列表理解

>>> len([None for i in my_list if i == 'C'])
8

过滤器

注意。这可能对计算不完全相同的对象最有用

>>> len(list(filter('C'.__eq__, my_list)))
8

collections.Counter

(@eduardosufan 已经提出)

from collections import Counter
Counter(my_list)['C']

输出:8

list.count方法

>>> my_list.count('C')
8