Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 목록 목록의 모든 위치에서 주어진 문자의 빈도 찾기

<시간/>

요소로 목록으로 구성된 목록이 있는 시나리오를 고려해 보겠습니다. 우리는 내부 목록의 다른 위치에서 한 문자의 빈도를 찾는 데 관심이 있습니다. 아래 예는 요구 사항을 명확히 합니다.

아래에 제공된 목록을 고려하십시오.

listA = [['a', 'a', 'b'],
['a', 'c', 'b'],
['c', 'a', 'b'],
['c', 'a', 'a']]

abobe 목록에는 3개의 요소가 있는 목록인 요소가 있습니다. 첫 번째 내부 목록 tit에는 0,1,2 위치에,a,b가 있습니다. 마찬가지로 세 번째 목록의 경우 0,1,2에서 c,a,b입니다. 모든 내부 목록을 고려할 때 위치 0의 빈도 a는 2, 위치 1의 빈도는 3, 위치 2의 빈도는 1입니다.

아래 프로그램은 목록 목록의 모든 요소에 대해 이러한 값을 찾는 것을 목표로 합니다.

판다 사용

pandas 라이브러리는 데이터 프레임을 생성하여 데이터 조작에 광범위하게 사용됩니다. 그래서 우리는 데이터 프레임을 만들고 데이터 프레임의 각 위치에 값 'a'가 있는지 찾기 위해 where 절을 사용하여 반복합니다.

예시

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]