让我们考虑一个场景,其中有一个由列表组成的列表。我们有兴趣在内部列表的不同位置查找一个字符的出现频率。下面的示例将阐明要求。
考虑下面给出的列表列表。
listA = [['a', 'a', 'b'], ['a', 'c', 'b'], ['c', 'a', 'b'], ['c', 'a', 'a']]
在abobe列表中,我们具有包含3个元素的列表。如果我认为第一个内部列表山雀在位置0,1,2处有a,a,b。同样,对于第三个列表,它是0,1,2处的c,a,b。考虑所有内部列表,我们可以说位置0的频率a为2,位置1的频率a为3,位置2的频率a为1。
下面的程序旨在为列表中的任何元素找到此类值。
通过创建数据框,pandas库被广泛用于数据操作。因此,我们创建一个数据帧并使用where子句遍历该数据帧,以查找值'a'是否出现在数据帧的每个位置中。
import pandas as pd # Given list of lists listA = [['a', 'a', 'b'], ['a', 'c', 'b'], ['c', 'a', 'b'], ['c', 'a', 'a']] # using pandas df = pd.DataFrame(listA) res = df.where(df == 'a', 0).where(df != 'a', 1) # Result print("Occurrence of 'a' at 0,1 and 2 position\n", res.sum())
输出结果
运行上面的代码给我们以下结果-
Occurrence of 'a' at 0,1 and 2 position 0 2.0 1 3.0 2 1.0
我们可以使用for循环遍历列表子列表中的每个位置,并将zip函数应用于整个列表列表。
# Given list of lists listA = [['a', 'a', 'b'], ['a', 'c', 'b'], ['c', 'a', 'b'], ['c', 'a', 'a']] res = [elem.count('a') for elem in zip(*listA)] # Result print("Occurrence of 'a' at 0,1 and 2 position\n", res)
输出结果
运行上面的代码给我们以下结果-
Occurrence of 'a' at 0,1 and 2 position [2, 3, 1]