所以我有一个列表:
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)
答案 0 :(得分:0)
由于所有列表的长度都相同,您可以执行以下操作:
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
行。
答案 1 :(得分:0)
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
答案 2 :(得分:0)
这是最简单的答案。你的老师永远不会相信你写的,抱歉。
def f(n, lists):
return len(filter(lambda l: l[0] == n, lists))