在 Python 中查找列表列表中每个位置上给定字符的频率
pythonserver side programmingprogramming更新于 2025/11/23 21:00:17
让我们考虑这样一种情况,您有一个由列表作为其元素组成的列表。我们感兴趣的是查找内部列表不同位置上某个字符的频率。下面的例子将阐明要求。
考虑下面给出的列表列表。
listA = [['a', 'a', 'b'], ['a', 'c', 'b'], ['c', 'a', 'b'], ['c', 'a', 'a']]
在上面的列表中,我们有包含 3 个元素的列表元素。如果我考虑第一个内部列表,则在位置 0、1、2 处有 a、a、b。类似地,对于第三个列表,它在 0、1、2 处为 c、a、b。考虑到所有内部列表,我们可以说位置 0 处的频率 a 是 2,位置 1 处的频率 a 是 3,位置 2 处的频率 a 是 1。
以下程序旨在为列表列表中的任何元素找到这样的值。
使用 pandas
pandas 库广泛用于通过创建数据框来处理数据。因此,我们创建一个数据框并使用 where 子句循环遍历它以查找值"a"是否出现在数据框中的每个位置。
示例
import pandas as pd
# 给定列表列表
listA = [['a', 'a', 'b'],
['a', 'c', 'b'],
['c', 'a', 'b'],
['c', 'a', 'a']]
# 使用 pandas
df = pd.DataFrame(listA)
res = df.where(df == 'a', 0).where(df != 'a', 1)
# 结果
print("0,1 和 2 位置出现 'a'\n", res.sum())
输出
运行上述代码得到以下结果 −
0,1 和 2 位置出现 'a' 0 2.0 1 3.0 2 1.0
使用 zip
我们可以使用 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)]
# 结果
print("Occurrence of 'a' at 0,1 and 2 position\n", res)
输出
运行上述代码得到以下结果 −
Occurrence of 'a' at 0,1 and 2 position [2, 3, 1]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

