【问题标题】:How to print out list one single time after append?追加后如何打印一次列表?
【发布时间】:2021-11-22 13:36:55
【问题描述】:
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' 添加到 list1 中。并计算list1中有多少'C'。迭代列表和len(list1) 但这会给我所有的len 我的迭代......计算list1 中only'C' 数量的更简单方法是什么?没有迭代? 提前致谢。

【问题讨论】:

  • print(list1)从循环中取出,然后再做。
  • 顺便说一句,不要使用list作为变量名,它是一个内置函数的名称。
  • 最简单的方法是使用内置方法count()
  • 顺便说一句,这是一个元组而不是一个列表......无论如何,最简单的方法是使用内置方法list.count("C")。当然,这使用了迭代,但是你无法计算列表中的事物数量没有迭代
  • 另请注意,您的列表实际上是tuple

标签: python python-3.x list append


【解决方案1】:

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

经典循环

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

【讨论】:

    【解决方案2】:

    使用集合计数器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
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-17
        • 2022-11-22
        • 1970-01-01
        • 2018-03-18
        • 1970-01-01
        • 2019-08-20
        • 1970-01-01
        • 2013-09-30
        相关资源
        最近更新 更多