มันคืออะไร
การแปลงชุดเป็นรายการหมายถึงการเปลี่ยนคอลเลกชันที่ไม่ได้เรียงลำดับขององค์ประกอบที่ไม่ซ้ำกันและเป็นไปได้เป็นลำดับที่สั่งซื้อและสามารถจัดทำดัชนีได้ ในทางปฏิบัติคุณจะใช้ชุดและสร้างรายการที่มีองค์ประกอบเดียวกัน
ทำไมมันถึงสำคัญ
ชุดเหมาะสำหรับการทดสอบการเป็นสมาชิกที่รวดเร็วและลบรายการซ้ำ แต่ไม่สนับสนุนการจัดทำดัชนีหรือการหั่น รายการทำ การแปลงช่วยให้คุณ:
- ดัชนีชิ้นหรือการจัดลำดับองค์ประกอบใหม่
- เรียงลำดับรายการหรือทำให้เป็นอนุกรมตามลำดับที่เฉพาะเจาะจง
- ส่งข้อมูลไปยัง API ที่ต้องการรายการ
วิธีใช้
วิธีที่ 1: ใช้รายการ () ตัวสร้าง (โดยตรงมากที่สุด)
ในตัวlist()Constructor ยอมรับการวนซ้ำใด ๆ - รวมถึงชุดและ Frozensets - และส่งคืนรายการใหม่
# Set to list
s = {1, 2, 3, 4}
lst = list(s)
print(lst) # e.g., [1, 2, 3, 4] (order is arbitrary)
วิธีที่ 2: แกะด้วย [*iterable] (กระชับ)
การเปิดตัวที่นำแสดงโดยจะเปลี่ยนเป็นองค์ประกอบภายในรายการใหม่ตามตัวอักษร การเปิดตัวทั่วไปนี้ระบุไว้ใน PEP 448
s = {1, 2, 3, 4}
lst = [*s]
print(lst) # e.g., [3, 1, 4, 2]
วิธีที่ 3: สร้างรายการที่เรียงลำดับ
หากคุณต้องการคำสั่งซื้อที่คาดเดาได้ให้ใช้sorted()เพื่อส่งคืนรายการที่จัดเรียงตามลำดับธรรมชาติ องค์ประกอบจะต้องเปรียบเทียบร่วมกัน
แนะนำอ่าน:
s = {10, 2, 7, 3}
lst = sorted(s)
print(lst) # [2, 3, 7, 10]
วิธีที่ 4: วนซ้ำและผนวก (การควบคุมที่ชัดเจน)
verbose มากขึ้น แต่มีประโยชน์หากคุณต้องการแปลงองค์ประกอบระหว่างการแปลง
s = {1, 2, 3, 4}
lst = []
for x in s:
lst.append(x * 10) # example transformation
print(lst)
วิธีที่ 5: จาก Frozenset
Frozensets เป็นชุดที่ไม่เปลี่ยนรูป การแปลงนั้นเหมือนกันกับlist()- ดู Frozenset
fs = frozenset({1, 2, 3})
lst = list(fs)
print(lst)
ข้อ จำกัด และการแลกเปลี่ยน
- คำสั่งซื้อ: ชุดไม่มีการเรียงลำดับ รายการที่คุณได้รับจากชุดมีลำดับการทำซ้ำโดยพลการ ใช้
sorted(s)หากคุณต้องการคำสั่งซื้อที่กำหนด - การเปรียบเทียบ:
sorted(s)ต้องการองค์ประกอบทั้งหมดที่จะเปรียบเทียบได้ ชนิดผสมเช่น{1, "a"}จะเพิ่มไฟล์TypeErrorเมื่อจัดเรียง - ประสิทธิภาพ: การแปลงเป็นเส้นตรงในจำนวนองค์ประกอบ, o (n) สำหรับวิธีการที่ตรงไปตรงมาทั้งหมด (การก่อสร้าง, แกะ, การวนซ้ำ)
- ความสามารถในการแฮช: วัตถุที่แฮชได้เท่านั้นสามารถอยู่ในชุดได้ หากคุณต้องการรวมรายการที่ไม่สามารถใช้งานได้ (เช่นรายการ) คุณต้องแปลงพวกเขา (เช่นเป็น tuples) ก่อนที่พวกเขาจะอยู่ในชุด
คำถามที่พบบ่อย
Set → List เก็บคำสั่งซื้อเดิมหรือไม่?
ไม่ชุดไม่มีคำสั่งรับประกัน หากคุณต้องการคำสั่งซื้อเฉพาะให้ใช้sorted(s)หรือใช้ฟังก์ชั่นคีย์ของคุณเองด้วยsorted(s, key=...)-
ฉันเห็น "typeerror: 'set' วัตถุไม่สามารถเรียกได้" เกิดอะไรขึ้น
คุณอาจเขียนทับชื่อในตัวsetด้วยตัวแปรจากนั้นลองเรียกมัน เริ่มเชลล์สดหรือลบตัวแปรและหลีกเลี่ยงตัวแปรการตั้งชื่อsetหรือlist-
set = {1, 2} # bad: shadows the built-in
set([3, 4]) # TypeError
วิธีที่เร็วที่สุดคืออะไร?
สำหรับการแปลงธรรมดาlist(s)และ[*s]มีทั้งความกระชับและ o (n) เลือกทีมของคุณพบว่าอ่านได้มากที่สุด
ฉันจะลบรายการซ้ำออกจากรายการและรักษาคำสั่งซื้อครั้งแรกได้อย่างไร
รูปแบบทั่วไปคือการหักล้างกับคำสั่งซื้อของคีย์จากนั้นแปลงกลับเป็นรายการ:
data = ["a", "b", "a", "c", "b"]
unique_preserving_order = list(dict.fromkeys(data)) # Python 3.7+
print(unique_preserving_order) # ['a', 'b', 'c']
วิธีการคลาสได้รับการบันทึกไว้ภายใต้dict.fromkeys-
ฉันสามารถแปลงและเรียงลำดับในเวลาเดียวกันได้หรือไม่?
ใช่:sorted(s)ส่งคืนรายการดังนั้นคุณไม่จำเป็นต้องมีตัวสร้างพิเศษ
การอ้างอิงอย่างรวดเร็ว
# Basic conversion
lst = list(s)
# Unpack into a list literal
lst = [*s]
# Sorted list
lst = sorted(s)
# Frozenset to list
lst = list(fs)
# Transform while converting
lst = [func(x) for x in s]




![วิธีค้นหารหัสผ่านที่เก็บไว้ใน Windows 10 [ทีละขั้นตอน]](https://th.elsefix.com/tech/alice/wp-content/uploads/cache/2025/06/view-saved-passwords-windows-10.jpg)








