【问题标题】:Count the number of lists that starts with the same item in a list计算以列表中相同项目开头的列表数
【发布时间】:2016-01-21 18:01:48
【问题描述】:

所以我有一个类似的列表:

result = [["1", "1", "a", 8.2],["1", "2", "c", 6.2],["2", "1", "a", 8.2]]

我想要一个函数,它返回以 (index[0]) 开头并带有变量 "n" 的列表的计数。所以,如果n = '1' 在这种情况下我得到2,如果n = '2' I get 1

编辑:我已经尝试了一些类似的方法,但无法正常工作。

def Count(list,n):
result = []
value = 0
for i in list:
    if str(i[0]) == n:
        value = value + 1
        sum.append[value]
return len(sum)

print Count(result,1)

【问题讨论】:

  • 那么你尝试了什么,它到底有什么问题?
  • 那里没有以1 开头的子列表,除非您的意思是'1'
  • 所有子列表的长度都一样吗?
  • @jonrsharpe 我已经添加了我尝试过的一件事。
  • “无法工作” - 更具体一些。错误(提供完整的追溯)?意外输出(提供输入以及预期和实际输出)? SO 不是来为你做你的工作/家庭作业的。

标签: python list function python-2.7 count


【解决方案1】:

由于所有列表的长度相同,您可以执行以下操作:

import itertools

result = [["1", "1", "a", 8.2],["1", "2", "c", 6.2],["2", "1", "a", 8.2]]

res=list(itertools.chain.from_iterable(result))

res[0::4].count('1')
# prints 2
res[0::4].count('2')
#prints 1

首先,您使用itertools.chain 展平列表列表(如果您有大量列表,这非常有效;否则简单的列表理解可能会更快),然后您获取每个子列表的第一个元素并计算如何通常存在某个字符串。

你写的更正函数:

result = [["1", "1", "a", 8.2],["1", "2", "c", 6.2],["2", "1", "a", 8.2]]

def Count(myList,n):

    value = 0
    for i in myList:
        if i[0] == str(n):
            value = value + 1               

    return value

print Count(result,2)

不要使用单词list 作为参数/变量名。由于您实际上传递了一个数字,因此您必须将n 转换为字符串(子列表中的元素已经是字符串);根本不需要sum.append 的行。

【讨论】:

    【解决方案2】:
    result = [["1", "1", "a", 8.2],["1", "2", "c", 6.2],["2", "1", "a", 8.2]]
    lst2 = [item[0] for item in result]
    lst2.count("1")
    

    result = [["1", "1", "a", 8.2],["1", "2", "c", 6.2],["2", "1", "a", 8.2]]
    
    def Count(myList,n):
        lst2 = [item[0] for item in myList]
        return lst2.count(str(n))
    
    print Count(result,1) #prints 2
    print Count(result,2) #prints 1
    

    【讨论】:

      【解决方案3】:

      这是最简单的答案。你的老师永远不会相信你写的,对不起。

      def f(n, lists):
          return len(filter(lambda l: l[0] == n, lists))
      

      【讨论】:

        猜你喜欢
        • 2016-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-14
        相关资源
        最近更新 更多