假设我有一个二维数组的字符串,如下所示:
A = [['a', 'b', 'b'],
['c', 'c', 'a'],
['d', 'c', 'a']]
我想知道给定元素出现的行数,以便我得到输出:
In [1]: get_number_rows('a')
Out[1]: 3
In [2]: get_number_rows('b')
Out[2]: 1
In [1]: get_number_rows('c')
Out[1]: 2
In [2]: get_number_rows('d')
Out[2]: 1
请注意,我不想要'a'的总出现次数,而是它出现的行数。
我试过循环遍历行并简单计数,但我正在处理一个非常大的数据集(1000s x 1000s),所以它非常慢。任何更快的解决方案将不胜感激
对于行,尝试类似的东西
len([x for x in A if 'a' in x])
这个列表理解列出了x
中所有列表A
满足'a' in x
的条件。然后,您可以使用该列表的长度来获取它们的总数。
您可以使用以下get_number_rows()
方法来总结包含该字符的数组的数量:
A = [['a', 'b', 'b'],
['c', 'c', 'a'],
['d', 'c', 'a']]
def get_number_rows(char):
return len([x for x in A if char in x])
get_number_rows('a')
>> 3
get_number_rows('b')
>> 1
get_number_rows('c')
>> 2
get_number_rows('d')
>> 1
if __name__ == "__main__":
A = [['a', 'b', 'b'],
['c', 'c', 'a'],
['d', 'c', 'a']]
def get_number_rows(A, desired_element):
"""
Pass in two dimensional array, A as first parameter
Pass in desired char element, desired_element as 2nd parameter.
Function will return number of occurrences of desired_element in A.
"""
element_count = 0 # Int to keep track of occurrences
for group in A: # For nested array in A
if desired_element in group: # If our desired element is in the sub array
element_count += 1 # Increment our counter
return element_count # After completion, return the counter
print(get_number_rows(A, 'a'))
print(get_number_rows(A, 'b'))
print(get_number_rows(A, 'c'))
print(get_number_rows(A, 'd'))