ตั้งค่า

รายงานปัญหา ดูแหล่งที่มา รุ่น Nightly 8.1 · 8.0 · 7.5 · 7.4 · 7.3 · 7.2

ประเภทชุดในตัว ชุดคือคอลเล็กชันค่าที่ไม่ซ้ำกันซึ่งเปลี่ยนแปลงได้และวนซ้ำได้ ซึ่งก็คือองค์ประกอบของชุด ชื่อประเภทของชุดคือ "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 ชุด

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 และเมื่อตรึงแล้ว การดำเนินการทั้งหมดที่ตามมาซึ่งพยายามอัปเดตชุดจะดำเนินการไม่สำเร็จ

สมาชิก

เพิ่ม

None set.add(element)

เพิ่มองค์ประกอบลงในชุด

คุณสามารถaddค่าที่มีอยู่แล้วในชุดได้ ซึ่งจะไม่ทําให้ชุดค่าเปลี่ยนแปลง

หากต้องการเพิ่มองค์ประกอบหลายรายการลงในชุด ให้ดู update หรือการดำเนินการกำหนดค่าแบบเพิ่ม |=

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
element required
องค์ประกอบที่จะเพิ่ม

ล้าง

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 required
ชุด ลําดับองค์ประกอบที่ทําแฮชได้ หรือพจนานุกรม

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 required
ชุด ลําดับองค์ประกอบที่ทําแฮชได้ หรือพจนานุกรม

ทิ้ง

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 required
องค์ประกอบที่จะทิ้ง ต้องแฮชได้

อินเตอร์เซกชัน

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 required
ชุด ลําดับองค์ประกอบที่ทําแฮชได้ หรือพจนานุกรม

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 required
ชุด ลําดับองค์ประกอบที่ทําแฮชได้ หรือพจนานุกรม

isdisjoint

bool set.isdisjoint(other)

แสดงค่า "จริง" หากชุดนี้ไม่มีองค์ประกอบใดที่เหมือนกันกับชุดอื่น

ตัวอย่างเช่น

set([1, 2]).isdisjoint([3, 4])  # True
set().isdisjoint(set())         # True
set([1, 2]).isdisjoint([2, 3])  # False

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
other required
ชุด ลําดับองค์ประกอบที่ทําแฮชได้ หรือพจนานุกรม

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 required
ชุด ลําดับองค์ประกอบที่ทําแฮชได้ หรือพจนานุกรม

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 required
ชุด ลําดับองค์ประกอบที่ทําแฮชได้ หรือพจนานุกรม

ป็อป

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 required
องค์ประกอบที่จะนําออก ต้องเป็นองค์ประกอบของชุด (และสามารถแฮชได้)

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 required
ชุด ลําดับองค์ประกอบที่ทําแฮชได้ หรือพจนานุกรม

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 required
ชุด ลําดับองค์ประกอบที่ทําแฮชได้ หรือพจนานุกรม

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 required
ชุด ลําดับองค์ประกอบที่ทําแฮชได้ หรือพจนานุกรม

อัปเดต

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 required
ชุด ลําดับองค์ประกอบที่ทําแฮชได้ หรือพจนานุกรม