Hãy xem xét một tình huống mà bạn có một danh sách được tạo thành từ các danh sách như các phần tử của nó. Chúng tôi quan tâm đến việc tìm tần suất xuất hiện của một ký tự tại các vị trí khác nhau của danh sách bên trong. Ví dụ dưới đây sẽ làm rõ yêu cầu.
Hãy xem xét danh sách các danh sách được đưa ra bên dưới.
listA = [['a', 'a', 'b'], ['a', 'c', 'b'], ['c', 'a', 'b'], ['c', 'a', 'a']]
Trong danh sách trên, chúng ta có các phần tử là danh sách có 3 phần tử. Nếu tôi coi danh sách bên trong đầu tiên tit có a, a, b ở các vị trí 0,1,2. Tương tự đối với danh sách thứ 3, đó là c, a, b ở 0,1,2. Xem xét tất cả các danh sách bên trong, chúng ta có thể nói tần số a ở vị trí 0 là 2, và ở vị trí 1 là 3 và ở vị trí 2 là 1.
Các chương trình dưới đây nhằm mục đích tìm các giá trị như vậy cho bất kỳ phần tử nào trong danh sách các danh sách.
gấu trúc Uisng
Thư viện gấu trúc được sử dụng rộng rãi để thao tác dữ liệu bằng cách tạo khung dữ liệu. Vì vậy, chúng tôi tạo một khung dữ liệu và lặp qua nó với mệnh đề where để tìm xem giá trị ‘a’ có ở mỗi vị trí trong khung dữ liệu hay không.
Ví dụ
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())
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
Occurrence of 'a' at 0,1 and 2 position 0 2.0 1 3.0 2 1.0
Với zip
Chúng ta có thể sử dụng vòng lặp for để lặp qua từng vị trí trong danh sách con trong danh sách và áp dụng hàm zip cho toàn bộ danh sách thứ.
Ví dụ
# 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)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
Occurrence of 'a' at 0,1 and 2 position [2, 3, 1]