Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算列表中以同一项开头的列表数_Python_List_Function_Python 2.7_Count - Fatal编程技术网

Python 计算列表中以同一项开头的列表数

Python 计算列表中以同一项开头的列表数,python,list,function,python-2.7,count,Python,List,Function,Python 2.7,Count,所以我有一个列表,比如: result = [["1", "1", "a", 8.2],["1", "2", "c", 6.2],["2", "1", "a", 8.2]] 我需要一个函数,该函数返回使用变量“n”启动的(索引[0])列表的计数。因此,如果n='1'I在本例中得到2,如果n='2'I得到1 编辑:我试过一些类似的方法,但都没用 def Count(list,n): result = [] value = 0 for i in list: if str(i[0]) ==

所以我有一个列表,比如:

result = [["1", "1", "a", 8.2],["1", "2", "c", 6.2],["2", "1", "a", 8.2]]
我需要一个函数,该函数返回使用变量
“n”
启动的
(索引[0])
列表的计数。因此,如果
n='1'
I在本例中得到2,如果
n='2'
I得到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)

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

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)
不要将单词
列表
用作参数/变量名。由于您实际上传递了一个数字,因此必须将
n
转换为字符串(子列表中的元素已经是字符串);完全不需要带有
sum.append
的行

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")


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

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

那么你尝试过什么,它到底有什么问题?那里没有以
1
开头的子列表,除非你的意思是
'1'
。所有子列表的长度都相同吗?@jornsharpe我添加了一件我尝试过的事情。“不能让任何东西工作”-更具体一些。错误(提供完整的回溯)?意外输出(提供输入以及预期和实际输出)?所以他不是来帮你做作业的。
def f(n, lists):
    return len(filter(lambda l: l[0] == n, lists))