"set"
ชุดข้อมูลมีการดำเนินการแบบเวลาคงที่เพื่อแทรก นำออก หรือตรวจสอบการมีอยู่ของค่า ชุดจะได้รับการติดตั้งใช้งานโดยใช้ตารางแฮช ดังนั้นองค์ประกอบของชุดจึงต้องแฮชได้เช่นเดียวกับคีย์ของพจนานุกรม ค่าอาจใช้เป็น องค์ประกอบของชุดได้ก็ต่อเมื่อใช้เป็นคีย์ของพจนานุกรมได้เท่านั้น
คุณสร้างชุดได้โดยใช้ฟังก์ชัน set() ในตัว
ซึ่งจะแสดงผลชุดใหม่ที่มีองค์ประกอบที่ไม่ซ้ำกันของอาร์กิวเมนต์ที่ไม่บังคับ ซึ่ง
ต้องเป็นอาร์กิวเมนต์ที่วนซ้ำได้ การเรียกใช้ set() โดยไม่มีอาร์กิวเมนต์จะสร้างชุดว่าง ชุดข้อมูล
ไม่มีไวยากรณ์ตัวอักษร
การดำเนินการ in และ not in จะตรวจสอบว่าค่าอยู่ใน (หรือไม่อยู่ใน) ชุดข้อมูลหรือไม่
s = set(["a", "b", "c"]) "a" in s # True "z" in s # False
ชุดข้อมูลสามารถวนซ้ำได้ จึงอาจใช้เป็นตัวถูกดำเนินการของลูป for, การทำความเข้าใจรายการ และฟังก์ชันในตัวต่างๆ ที่ทำงานกับรายการที่วนซ้ำได้ คุณสามารถดึงข้อมูลความยาวของชุดได้โดยใช้ฟังก์ชันในตัว len() และลำดับการวนซ้ำคือลำดับที่เพิ่มองค์ประกอบลงในชุดเป็นครั้งแรก
s = set(["z", "y", "z", "y"])
len(s) # prints 2
s.add("x")
len(s) # prints 3
for e in s:
print e # prints "z", "y", "x"
ชุดที่ใช้ในบริบทบูลีนจะเป็นจริงก็ต่อเมื่อชุดนั้นไม่ว่างเปล่า
s = set() "non-empty" if s else "empty" # "empty" t = set(["x", "y"]) "non-empty" if t else "empty" # "non-empty"
คุณอาจเปรียบเทียบเซ็ตเพื่อดูว่าเท่ากันหรือไม่เท่ากันโดยใช้ == และ != ชุดข้อมูล
s จะเท่ากับ t ก็ต่อเมื่อ t เป็นชุดข้อมูลที่มีองค์ประกอบเดียวกัน
เท่านั้น โดยลำดับการวนซ้ำไม่มีนัยสำคัญ กล่าวคือ ชุดไม่เท่ากับรายการ
ขององค์ประกอบ ชุดข้อมูลจะไม่มีการจัดเรียงตามชุดข้อมูลอื่นๆ และการพยายามเปรียบเทียบชุดข้อมูล 2 ชุด
โดยใช้ <, <=, >, >= หรือการจัดเรียงลำดับชุดข้อมูล
จะล้มเหลว
set() == set() # True set() != [] # True set([1, 2]) == set([2, 1]) # True set([1, 2]) != [1, 2] # True
การดำเนินการ | ใน 2 ชุดจะแสดงผลยูเนียนของ 2 ชุด ซึ่งเป็นชุดที่มี
องค์ประกอบที่พบในชุดเดิมชุดใดชุดหนึ่งหรือทั้ง 2 ชุด
set([1, 2]) | set([3, 2]) # set([1, 2, 3])
& การดำเนินการกับ 2 ชุดจะแสดงผลส่วนที่ทับซ้อนกันของ 2 ชุด ซึ่งเป็นชุด
ที่มีเฉพาะองค์ประกอบที่พบในทั้ง 2 ชุดเดิม
set([1, 2]) & set([2, 3]) # set([2]) set([1, 2]) & set([3, 4]) # set()
การดำเนินการ - ใน 2 ชุดจะแสดงผลความแตกต่างของ 2 ชุด ซึ่งเป็นชุดที่มี
องค์ประกอบที่พบในชุดทางด้านซ้ายมือแต่ไม่พบในชุดทางด้านขวามือ
set([1, 2]) - set([2, 3]) # set([1]) set([1, 2]) - set([3, 4]) # set([1, 2])
การดำเนินการ ^ ใน 2 ชุดจะแสดงผลความแตกต่างแบบสมมาตรของ 2 ชุด ซึ่งเป็นชุด
ที่มีองค์ประกอบที่พบในชุดเดิม 2 ชุดเพียงชุดเดียวเท่านั้น แต่ไม่ใช่ทั้ง 2 ชุด
set([1, 2]) ^ set([2, 3]) # set([1, 3]) set([1, 2]) ^ set([3, 4]) # set([1, 2, 3, 4])
ในการดำเนินการแต่ละอย่างข้างต้น องค์ประกอบของชุดผลลัพธ์จะยังคงลำดับจากชุดตัวถูกดำเนินการทั้ง 2 ชุด โดยองค์ประกอบทั้งหมดที่ดึงมาจากด้านซ้ายจะเรียงลำดับก่อนองค์ประกอบที่อยู่ในด้านขวาเท่านั้น
การกำหนดค่าที่เพิ่มขึ้นที่เกี่ยวข้อง |=, &=, -=
และ ^= จะแก้ไขชุดทางด้านซ้ายในตำแหน่ง
s = set([1, 2]) s |= set([2, 3, 4]) # s now equals set([1, 2, 3, 4]) s &= set([0, 1, 2, 3]) # s now equals set([1, 2, 3]) s -= set([0, 1]) # s now equals set([2, 3]) s ^= set([3, 4]) # s now equals set([2, 4])
เช่นเดียวกับค่าที่เปลี่ยนแปลงได้ทั้งหมดใน Starlark ชุดข้อมูลสามารถตรึงได้ และเมื่อตรึงแล้ว การดำเนินการต่อๆ ไปทั้งหมดที่พยายามอัปเดตชุดข้อมูลจะล้มเหลว
สมาชิก
- เพิ่ม
- ล้าง
- ความแตกต่าง
- difference_update
- ทิ้ง
- ทางแยก
- intersection_update
- isdisjoint
- issubset
- issuperset
- ป๊อป
- ลบ
- symmetric_difference
- symmetric_difference_update
- union
- อัปเดต
เพิ่ม
None set.add(element)คุณสามารถaddค่าที่มีอยู่ในชุดอยู่แล้วได้ ซึ่งจะทำให้ชุด
ไม่มีการเปลี่ยนแปลง
หากต้องการเพิ่มองค์ประกอบหลายรายการลงในชุด ให้ดู update หรือ
การดำเนินการกำหนดค่าเพิ่มเติม |=
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
element
|
ต้องระบุ องค์ประกอบที่จะเพิ่ม |
ล้าง
None set.clear()ผลต่าง
set set.difference(*others)
หาก s และ t เป็นชุด s.difference(t) จะเทียบเท่ากับ
s - t อย่างไรก็ตาม โปรดทราบว่าการดำเนินการ - ต้องมีทั้ง 2 ด้านเป็นชุด
ขณะที่เมธอด difference ยังยอมรับลำดับและพจนานุกรมด้วย
คุณเรียก difference โดยไม่มีอาร์กิวเมนต์ได้ ซึ่งจะส่งคืนสำเนาของ
ชุด
ตัวอย่างเช่น
set([1, 2, 3]).difference([2]) # set([1, 3]) set([1, 2, 3]).difference([0, 1], [3, 4]) # set([2])
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
others
|
ต้องระบุ ชุด ลำดับขององค์ประกอบที่แฮชได้ หรือพจนานุกรม |
difference_update
None set.difference_update(*others)หาก s และ t เป็นชุด s.difference_update(t) จะเทียบเท่ากับ s -= t อย่างไรก็ตาม โปรดทราบว่าการกำหนดค่าที่เพิ่มขึ้นของ -= ต้องมีทั้ง 2 ด้านเป็นชุด ในขณะที่เมธอด difference_update ยังยอมรับลำดับและพจนานุกรมด้วย
อนุญาตให้เรียก difference_update โดยไม่มีอาร์กิวเมนต์ใดๆ ซึ่งจะทำให้ชุดข้อมูล
ไม่มีการเปลี่ยนแปลง
ตัวอย่างเช่น
s = set([1, 2, 3, 4]) s.difference_update([2]) # None; s is set([1, 3, 4]) s.difference_update([0, 1], [4, 5]) # None; s is set([3])
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
others
|
ต้องระบุ ชุด ลำดับขององค์ประกอบที่แฮชได้ หรือพจนานุกรม |
ทิ้ง
None set.discard(element)คุณสามารถdiscardค่าที่ไม่มีอยู่ในชุดได้ ซึ่งจะทำให้ชุด
ไม่มีการเปลี่ยนแปลง หากต้องการให้การพยายามนำองค์ประกอบที่ไม่มีอยู่ออกล้มเหลว ให้ใช้
remove แทน หากต้องการนำองค์ประกอบหลายรายการออกจาก
ชุด ให้ดู difference_update หรือการดำเนินการกำหนดค่าที่เพิ่มขึ้นของ -=
ตัวอย่างเช่น
s = set(["x", "y"])
s.discard("y") # None; s == set(["x"])
s.discard("y") # None; s == set(["x"])
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
element
|
ต้องระบุ องค์ประกอบที่จะทิ้ง ต้องแฮชได้ |
อินเตอร์เซกชัน
set set.intersection(*others)
หาก s และ t เป็นชุด s.intersection(t) จะเทียบเท่ากับ
s & t อย่างไรก็ตาม โปรดทราบว่าการดำเนินการ & ต้องมีทั้ง 2 ด้านเป็นชุด
ในขณะที่เมธอด intersection ยังยอมรับลำดับและพจนานุกรมด้วย
คุณเรียก intersection โดยไม่มีอาร์กิวเมนต์ได้ ซึ่งจะส่งคืนสำเนาของ
ชุด
ตัวอย่างเช่น
set([1, 2]).intersection([2, 3]) # set([2]) set([1, 2, 3]).intersection([0, 1], [1, 2]) # set([1])
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
others
|
ต้องระบุ ชุด ลำดับขององค์ประกอบที่แฮชได้ หรือพจนานุกรม |
intersection_update
None set.intersection_update(*others)หาก s และ t เป็นชุด s.intersection_update(t) จะ
เทียบเท่ากับ s &= t แต่โปรดทราบว่าการกำหนดค่าที่เพิ่มขึ้นของ &=
ต้องใช้ทั้ง 2 ด้านเป็นชุด ในขณะที่เมธอด intersection_update ยัง
ยอมรับลำดับและพจนานุกรมด้วย
อนุญาตให้เรียก intersection_update โดยไม่มีอาร์กิวเมนต์ใดๆ ซึ่งจะทำให้ชุดข้อมูล
ไม่มีการเปลี่ยนแปลง
ตัวอย่างเช่น
s = set([1, 2, 3, 4]) s.intersection_update([0, 1, 2]) # None; s is set([1, 2]) s.intersection_update([0, 1], [1, 2]) # None; s is set([1])
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
others
|
ต้องระบุ ชุด ลำดับขององค์ประกอบที่แฮชได้ หรือพจนานุกรม |
isdisjoint
bool set.isdisjoint(other)
ตัวอย่างเช่น
set([1, 2]).isdisjoint([3, 4]) # True set().isdisjoint(set()) # True set([1, 2]).isdisjoint([2, 3]) # False
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
other
|
ต้องระบุ ชุด ลำดับขององค์ประกอบที่แฮชได้ หรือพจนานุกรม |
issubset
bool set.issubset(other)
โปรดทราบว่าระบบจะถือว่าชุดข้อมูลเป็นเซ็ตย่อยของตัวมันเองเสมอ
ตัวอย่างเช่น
set([1, 2]).issubset([1, 2, 3]) # True set([1, 2]).issubset([1, 2]) # True set([1, 2]).issubset([2, 3]) # False
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
other
|
ต้องระบุ ชุด ลำดับขององค์ประกอบที่แฮชได้ หรือพจนานุกรม |
issuperset
bool set.issuperset(other)
โปรดทราบว่าชุดข้อมูลจะถือเป็นซูเปอร์เซ็ตของตัวเองเสมอ
ตัวอย่างเช่น
set([1, 2, 3]).issuperset([1, 2]) # True set([1, 2, 3]).issuperset([1, 2, 3]) # True set([1, 2, 3]).issuperset([2, 3, 4]) # False
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
other
|
ต้องระบุ ชุด ลำดับขององค์ประกอบที่แฮชได้ หรือพจนานุกรม |
ป็อป
unknown set.pop()
จะล้มเหลวหากชุดข้อมูลว่างเปล่า
ตัวอย่างเช่น
s = set([3, 1, 2]) s.pop() # 3; s == set([1, 2]) s.pop() # 1; s == set([2]) s.pop() # 2; s == set() s.pop() # error: empty set
นำข้อมูลออก
None set.remove(element)remove จะล้มเหลวหากไม่มีองค์ประกอบในชุด หากไม่ต้องการให้การพยายามนำองค์ประกอบที่ไม่มีอยู่ออกล้มเหลว ให้ใช้ discard แทน
หากต้องการนำองค์ประกอบหลายรายการออกจากชุด ให้ดูdifference_updateหรือการดำเนินการกำหนดค่าที่เพิ่มขึ้นของ -=
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
element
|
ต้องระบุ องค์ประกอบที่จะนำออก ต้องเป็นองค์ประกอบของชุด (และแฮชได้) |
symmetric_difference
set set.symmetric_difference(other)
หาก s และ t เป็นชุด s.symmetric_difference(t) จะ
เทียบเท่ากับ s ^ t อย่างไรก็ตาม โปรดทราบว่าการดำเนินการ ^ ต้องมีทั้ง 2 ด้านเป็นชุด ในขณะที่เมธอด symmetric_difference ยังยอมรับลำดับหรือพจนานุกรมด้วย
ตัวอย่างเช่น
set([1, 2]).symmetric_difference([2, 3]) # set([1, 3])
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
other
|
ต้องระบุ ชุด ลำดับขององค์ประกอบที่แฮชได้ หรือพจนานุกรม |
symmetric_difference_update
None set.symmetric_difference_update(other)หาก s และ t เป็นชุด s.symmetric_difference_update(t) จะเทียบเท่ากับ `s ^= t; however, note that the ^=` การกำหนดค่าที่เพิ่มขึ้นต้องมีทั้ง 2 ด้านเป็นชุด ในขณะที่เมธอด symmetric_difference_update ยังยอมรับลำดับหรือพจนานุกรมด้วย
ตัวอย่างเช่น
s = set([1, 2]) s.symmetric_difference_update([2, 3]) # None; s == set([1, 3])
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
other
|
ต้องระบุ ชุด ลำดับขององค์ประกอบที่แฮชได้ หรือพจนานุกรม |
Union
set set.union(*others)
หาก s และ t เป็นชุด s.union(t) จะเทียบเท่ากับ
s | t อย่างไรก็ตาม โปรดทราบว่าการดำเนินการ | ต้องมีทั้ง 2 ด้านเป็นชุด
ขณะที่เมธอด union ยังยอมรับลำดับและพจนานุกรมด้วย
คุณสามารถเรียกใช้ union โดยไม่มีอาร์กิวเมนต์ได้ ซึ่งจะส่งคืนสำเนาของ
ชุด
ตัวอย่างเช่น
set([1, 2]).union([2, 3]) # set([1, 2, 3])
set([1, 2]).union([2, 3], {3: "a", 4: "b"}) # set([1, 2, 3, 4])
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
others
|
ต้องระบุ ชุด ลำดับขององค์ประกอบที่แฮชได้ หรือพจนานุกรม |
อัปเดต
None set.update(*others)ตัวอย่างเช่น
s = set() s.update([1, 2]) # None; s is set([1, 2]) s.update([2, 3], [3, 4]) # None; s is set([1, 2, 3, 4])
หาก s และ t เป็นชุด s.update(t) จะเทียบเท่ากับ
s |= t อย่างไรก็ตาม โปรดทราบว่าการกำหนดค่าเพิ่มเติม |= ต้องใช้ทั้ง 2 ด้าน
เป็นชุด ในขณะที่เมธอด update ยังยอมรับลำดับและพจนานุกรมด้วย
คุณเรียกใช้ update โดยไม่มีอาร์กิวเมนต์ได้ ซึ่งจะทำให้ชุดข้อมูล
ไม่เปลี่ยนแปลง
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
others
|
ต้องระบุ ชุด ลำดับขององค์ประกอบที่แฮชได้ หรือพจนานุกรม |