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

เพิ่มการเกิดของตัวเลขแต่ละตัวเป็นรายการย่อยใน Python


เรามีรายการที่มีองค์ประกอบเป็นตัวเลข องค์ประกอบหลายอย่างมีอยู่หลายครั้ง เราต้องการสร้างรายการย่อยเพื่อให้ความถี่ของแต่ละองค์ประกอบพร้อมกับองค์ประกอบเอง

มี for และต่อท้าย

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

ตัวอย่าง

def occurrences(list_in):
   for i in range(0, len(listA)):
      a = 0
      row = []
      if i not in listB:
         for j in range(0, len(listA)):
            # matching items from both positions
            if listA[i] == listA[j]:
               a = a + 1
            row.append(listA[i])
            row.append(a)
            listB.append(row)
      # Eliminate repetitive list items
      for j in listB:
         if j not in list_uniq:
            list_uniq.append(j)
      return list_uniq
# Caller code
listA = [13,65,78,13,12,13,65]
listB = []
list_uniq = []
print("Number of occurrences of each element in the list:\n")
print(occurrences(listA))

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Number of occurrences of each element in the list:
[[13, 3], [65, 2], [78, 1], [12, 1]]

มีเคาน์เตอร์

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

ตัวอย่าง

from collections import Counter
def occurrences(list_in):
   c = Counter(listA)
   new_list = []
   for k, v in c.items():
      new_list.append([k, v])
   return new_list
listA = [13,65,78,13,12,13,65]
print("Number of occurrences of each element in the list:\n")
print(occurrences(listA))

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Number of occurrences of each element in the list:
[[13, 3], [65, 2], [78, 1], [12, 1]]