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