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