วิธีลบรายการที่ซ้ำกันออกจากรายการใน Python
⚡ สรุปอย่างชาญฉลาด
การลบรายการที่ซ้ำกันออกจาก Python การสร้างลิสต์สามารถทำได้ด้วยวิธีการต่างๆ ที่มีอยู่แล้ว เช่น set(), dict.fromkeys(), ลูป, list comprehensions และเมธอดจากไลบรารีของ NumPy และ Pandas ซึ่งแต่ละวิธีจะปรับสมดุลระหว่างการรักษาลำดับกับความเร็ว
Python ลบรายการที่ซ้ำกันออกจากรายการ
รายการคือคอนเทนเนอร์ที่ประกอบด้วยข้อมูลที่แตกต่างกัน Python วัตถุ ซึ่งอาจเป็นจำนวนเต็ม คำ ค่า ฯลฯ ซึ่งเทียบเท่ากับอาร์เรย์ในภาษาการเขียนโปรแกรมอื่นๆ
ดังนั้นในที่นี้เราจะมาดูวิธีการต่างๆ ในการลบรายการซ้ำออกจากรายการที่กำหนด Python.
วิธีที่ 1) ลบรายการที่ซ้ำกันออกจากรายการโดยใช้ Set
ในการลบรายการที่ซ้ำกันออกจากลิสต์ คุณสามารถใช้ฟังก์ชัน set() ที่มีอยู่แล้วได้ จุดเด่นของเมธอด set() คือมันจะส่งคืนค่าที่ไม่ซ้ำกัน
เรามีลิสต์ [1,1,2,3,2,2,4,5,6,2,1] ลิสต์นี้มีค่าซ้ำกันหลายค่า ซึ่งเราจำเป็นต้องลบออกและดึงกลับมาเฉพาะค่าที่ไม่ซ้ำกันเท่านั้น เราป้อนลิสต์นี้ให้กับฟังก์ชัน set() ที่มีอยู่แล้ว Later รายการสุดท้ายจะแสดงผลโดยใช้ฟังก์ชันในตัว list()
ผลลัพธ์ที่ได้คือองค์ประกอบที่ไม่ซ้ำกัน โดยที่องค์ประกอบที่ซ้ำกันทั้งหมดถูกกำจัดออกไปแล้ว
ตัวอย่าง
my_list = [1,1,2,3,2,2,4,5,6,2,1]
my_final_list = set(my_list)
print(list(my_final_list))
Output:
[1, 2, 3, 4, 5, 6]
วิธีที่ 2) การใช้รายการชั่วคราว
ในการลบรายการซ้ำออกจากรายการที่กำหนด คุณสามารถใช้รายการชั่วคราวที่ว่างเปล่าได้ โดยขั้นแรก คุณจะต้องวนลูปผ่านรายการที่มีรายการซ้ำและเพิ่มรายการที่ไม่ซ้ำกันลงในรายการชั่วคราว Later รายการชั่วคราวถูกกำหนดให้กับรายการหลัก
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างการใช้งานโดยใช้รายการชั่วคราว
my_list = [1, 2, 3, 1, 2, 4, 5, 4 ,6, 2] print("List Before ", my_list) temp_list = [] for i in my_list: if i not in temp_list: temp_list.append(i) my_list = temp_list print("List After removing duplicates ", my_list)
Output:
List Before [1, 2, 3, 1, 2, 4, 5, 4, 6, 2] List After removing duplicates [1, 2, 3, 4, 5, 6]
วิธีที่ 3) การใช้ Dict
เราสามารถลบรายการซ้ำออกจากลิสต์ที่กำหนดได้โดยการนำเข้าคลาส OrderedDict จาก collections ซึ่งมีให้ใช้งานตั้งแต่ Python 2.7 เป็นต้นไป OrderedDict จะจัดการส่งคืนองค์ประกอบที่ไม่ซ้ำกันตามลำดับที่คีย์ปรากฏอยู่
เราจะใช้ลิสต์และเมธอด fromkeys() ที่มีอยู่ใน OrderedDict เพื่อดึงองค์ประกอบที่ไม่ซ้ำกันจากลิสต์นั้น
เพื่อให้สามารถใช้งานเมธอด OrderedDict.fromkeys() ได้ คุณต้องนำเข้า OrderedDict จาก collections ก่อน ดังที่แสดงด้านล่าง:
from collections import OrderedDict
ต่อไปนี้เป็นตัวอย่างการลบข้อมูลซ้ำโดยใช้วิธี OrderedDict.fromkeys()
ตัวอย่าง
from collections import OrderedDict my_list = ['a','x','a','y','a','b','b','c'] my_final_list = OrderedDict.fromkeys(my_list) print(list(my_final_list))
Output:
['a', 'x', 'y', 'b', 'c']
ราคาเริ่มต้น Python ตั้งแต่เวอร์ชัน 3.5 ขึ้นไป เราสามารถใช้เมธอด dict.fromkeys() เพื่อดึงองค์ประกอบที่ไม่ซ้ำกันจากรายการได้ เมธอด dict.fromkeys() จะส่งคืนคีย์ที่ไม่ซ้ำกันและช่วยกำจัดค่าที่ซ้ำกัน
ตัวอย่างที่แสดงวิธีใช้งาน dict.fromkeys() กับลิสต์เพื่อให้ได้รายการที่ไม่ซ้ำกัน มีดังนี้:
ตัวอย่าง
my_list = ['a','x','a','y','a','b','b','c'] my_final_list = dict.fromkeys(my_list) print(list(my_final_list))
Output:
['a', 'x', 'y', 'b', 'c']
วิธีที่ 4) การใช้ for-loop
การใช้ สำหรับห่วงเราจะสำรวจรายการเพื่อลบรายการที่ซ้ำกัน
ขั้นแรก ให้กำหนดค่าเริ่มต้นให้กับอาร์เรย์เป็นค่าว่าง เช่น myFinallist = [] ภายในลูป for ให้ตรวจสอบว่ารายการในลิสต์นั้นมีอยู่ในอาร์เรย์ myFinallist หรือไม่ ถ้าไม่มีรายการนั้น ให้เพิ่มรายการนั้นลงในอาร์เรย์ myFinallist โดยใช้เมธอด append()
ดังนั้นเมื่อใดก็ตามที่พบรายการที่ซ้ำกัน รายการนั้นจะอยู่ในอาร์เรย์ myFinallist อยู่แล้วและจะไม่ถูกแทรกเข้าไปใหม่ ลองตรวจสอบในตัวอย่างด้านล่างนี้ดู:
ตัวอย่าง
my_list = [1,2,2,3,1,4,5,1,2,6] myFinallist = [] for i in my_list: if i not in myFinallist: myFinallist.append(i) print(list(myFinallist))
Output:
[1, 2, 3, 4, 5, 6]
วิธีที่ 5) การใช้รายการความเข้าใจ
รายการความเข้าใจคือ Python ฟังก์ชันที่ใช้สำหรับสร้างลำดับใหม่ (เช่น รายการ พจนานุกรม ฯลฯ) โดยใช้ลำดับที่สร้างขึ้นแล้ว สิ่งนี้ช่วยให้คุณลดการวนซ้ำที่ยาวขึ้นและทำให้โค้ดของคุณอ่านและบำรุงรักษาได้ง่ายขึ้น
ให้เราใช้ความเข้าใจรายการเพื่อลบรายการที่ซ้ำกันออกจากรายการที่กำหนด
ตัวอย่าง
my_list = [1,2,2,3,1,4,5,1,2,6] my_finallist = [] [my_finallist.append(n) for n in my_list if n not in my_finallist] print(my_finallist)
Output:
[1, 2, 3, 4, 5, 6]
วิธีที่ 6) การใช้เมธอด unique() ของ NumPy
เมธอด unique() จากโมดูล NumPy สามารถช่วยเราลบรายการที่ซ้ำกันออกจากลิสต์ที่กำหนดได้
ในการใช้งาน NumPy ขั้นแรกให้ทำการอิมพอร์ตโมดูล numpy ก่อน:
ขั้นตอน 1) นำเข้าโมดูล NumPy
import numpy as np
ขั้นตอน 2) ใช้ลิสต์ที่มีข้อมูลซ้ำกันภายในเมธอด unique() จากนั้นใช้เมธอด tolist() แปลงผลลัพธ์กลับเป็นลิสต์อีกครั้ง
myFinalList = np.unique(my_list).tolist()
ขั้นตอน 3) สุดท้าย พิมพ์รายการออกมา:
print(myFinalList)
รหัสสุดท้ายพร้อมเอาต์พุตจะเป็นดังนี้:
import numpy as np my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = np.unique(my_list).tolist() print(myFinalList)
Output:
[1, 2, 3, 4, 5, 6]
วิธีที่ 7) การใช้วิธี Pandas
โมดูล Pandas มีเมธอดเฉพาะ () ที่จะให้องค์ประกอบเฉพาะจากรายการที่กำหนดแก่เรา
วิธีใช้งานโมดูล Pandas:
ขั้นตอน 1) นำเข้าโมดูล Pandas
import pandas as pd
ขั้นตอน 2) ใช้ลิสต์ที่มีข้อมูลซ้ำกันภายในเมธอด unique() :
myFinalList = pd.unique(my_list).tolist()
ขั้นตอน 3) พิมพ์รายการ:
print(myFinalList)
รหัสสุดท้ายพร้อมเอาต์พุตจะเป็นดังนี้:
import pandas as pd my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = pd.unique(my_list).tolist() print(myFinalList)
Output:
[1, 2, 3, 4, 5, 6]
วิธีที่ 8) การใช้ enumerate() และรายการความเข้าใจ
ในที่นี้เราใช้การผสมผสานระหว่าง list comprehension และ enumerate() เพื่อลบองค์ประกอบที่ซ้ำกัน enumerate จะส่งคืนอ็อบเจ็กต์ที่มีตัวนับสำหรับแต่ละองค์ประกอบในรายการ ตัวอย่างเช่น (0,1), (1,2) เป็นต้น โดยค่าแรกคือดัชนี และค่าที่สองคือรายการในลิสต์
แต่ละองค์ประกอบจะถูกตรวจสอบว่ามีอยู่ในรายการหรือไม่ และหากมีอยู่ก็จะถูกลบออกจากรายการ
ตัวอย่าง
my_list = [1,2,2,3,1,4,5,1,2,6] my_finallist = [i for j, i in enumerate(my_list) if i not in my_list[:j]] print(list(my_finallist))
Output:
[1, 2, 3, 4, 5, 6]

