【问题标题】:how to calculate number of values appeared in a string of list of lists如何计算出现在列表列表中的值的数量
【发布时间】:2021-09-27 15:02:51
【问题描述】:

如何计算出现在列表列表中的值的数量

a=['1000','10,8,6','9,76,9.0','1,2','']

需要的输出

b=[1,3,3,2,0]

a 在我的输入中,所需的输出是 b 如何使用python做到这一点

【问题讨论】:

  • 请分享您的尝试。
  • 这是你的作业吗?问题的哪一部分给你带来了麻烦?
  • 我无法为其编写代码
  • @depperm 此解决方案由用户之一共享 [len(s.split(',')) for s in a],但如果字符串为空,则计数将更新为 1 0,如何解决这个问题
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: python-3.x string list


【解决方案1】:

你可以使用str.split()和.isdigit(),len(list)然后得到你想要的。

试试这个:(如果在(),() 之间你总是有数字,则此代码有效`

>>> '10,8,6'.split(',')
['10', '8', '6']

>>> len(['10', '8', '6'])
3

>>> any(i.isdigit() for i in ''.split(','))
False

>>> any(i.isdigit() for i in '10,8,6'.split(','))
True

>>> a=['1000','10,8,6','9,76,9.0','1,2','']
>>> [len(s.split(',')) if any(i.isdigit() for i in s.split(',')) else 0 for s in a]
[1, 3, 3, 2, 0]

更新: (如果你在元素 like this : 'b,c,9.0' 中有字符,你可以使用它)

>>> def count_num(lst):
...    cnt = 0
...    for l in lst:
...        try:
...            float(l)
...            cnt += 1
...        except ValueError:
...            continue
...    return cnt
        
>>> a=['1000','10,a,6','b,c,9.0','1,2','']
>>> [count_num(i.split(',')) for i in  a]
[1, 2, 1, 2, 0]

【讨论】:

  • 感谢您的帮助,它非常有用,我能够得到我想要的输出
  • @ASHWINIBENNI 欢迎 ;)
  • @ASHWINIBENNI 编辑答案
猜你喜欢
  • 2023-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多