在 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]

相关文章


有用资源