Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาความถี่ของอักขระที่กำหนดทุกตำแหน่งในรายการของรายการใน Python


ให้พิจารณาสถานการณ์สมมติที่คุณมีรายการที่ประกอบด้วยรายการเป็นองค์ประกอบ เราสนใจที่จะค้นหาความถี่ของอักขระตัวหนึ่งในตำแหน่งต่างๆ ของรายการภายใน ตัวอย่างด้านล่างจะอธิบายข้อกำหนดให้ชัดเจน

พิจารณารายชื่อด้านล่าง

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

ในรายการ abobe เรามีองค์ประกอบที่เป็นรายการที่มี 3 องค์ประกอบ ถ้าฉันพิจารณาว่าหัวนมรายการภายในแรกมี a,a,b ที่ตำแหน่ง 0,1,2 ในทำนองเดียวกันสำหรับรายการที่ 3 มันคือ c,a,b ที่ 0,1,2 พิจารณารายการภายในทั้งหมด เราสามารถพูดได้ว่าความถี่ a ที่ตำแหน่ง 0 คือ 2 และที่ตำแหน่ง 1 คือ 3 และที่ตำแหน่ง 2 มันคือ 1

โปรแกรมด้านล่างมีจุดมุ่งหมายเพื่อค้นหาค่าดังกล่าวสำหรับองค์ประกอบใดๆ ในรายการของรายการ

หมีแพนด้า

ไลบรารีแพนด้าถูกใช้อย่างกว้างขวางสำหรับการจัดการข้อมูลโดยการสร้างดาต้าเฟรม ดังนั้นเราจึงสร้าง dataframe และวนซ้ำโดยใช้คำสั่ง where เพื่อค้นหาว่าค่า 'a' มีอยู่ในแต่ละตำแหน่งใน data frame หรือไม่

ตัวอย่าง

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 loop เพื่อวนซ้ำแต่ละตำแหน่งในรายการย่อยในรายการ และใช้ฟังก์ชัน 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]