在 Python 中将列表添加到集合中
Add a List to a Set in Python
使用该set.update()
方法将列表的元素添加到 a set
,例如
my_set.update(my_list)
。该set.update()
方法可以传递一个可迭代对象,例如列表,并将列表的元素添加到set
对象中。
主程序
# ✅ Add the elements of a list to a set (using update()) my_set = {'bobby', 'hadz', 'com'} my_list = ['one', 'two', 'three'] my_set.update(my_list) print(my_set) # 👉️ {'three', 'one', 'com', 'hadz', 'two', 'bobby'} # -------------------------------------------- # ✅ add an actual list to a set (using tuple()) my_set = {('bobby', 'hadz', 'com')} my_list = ['one', 'two', 'three'] my_set.add(tuple(my_list)) print(my_set) # 👉️ {('bobby', 'hadz', 'com'), ('one', 'two', 'three')}
第一个示例显示如何使用
set.update
方法将列表的元素添加到set
对象。
该
set.update()
方法可以传递一个或多个可迭代对象并更新set
,添加可迭代对象中的元素。主程序
my_set = {'bobby', 'hadz', 'com'} my_list = ['one', 'two', 'three'] my_set.update(my_list) print(my_set) # {'three', 'one', 'com', 'hadz', 'two', 'bobby'}
如果您需要声明一个空的set
,请确保使用set()
该类,因为使用一组空的大括号会声明一个字典。
主程序
my_set = set() # 👈️ declares an empty set my_list = ['bobby', 'hadz', 'com'] my_set.update(my_list) print(my_set) # 👉️ {'com', 'hadz', 'bobby'}
tuple()
如果需要将实际列表添加到
set
对象,则必须使用该类。
将列表添加到 a set
:
- 使用
tuple()
该类将列表转换为元组。 - 使用
set.add()
方法将 添加tuple
到 中set
。 - 元组是不可变的,可以添加到
set
.
主程序
my_set = {('bobby', 'hadz', 'com')} my_list = ['one', 'two', 'three'] my_set.add(tuple(my_list)) print(my_set) # 👉️ {('bobby', 'hadz', 'com'), ('one', 'two', 'three')}
我们不能将 alist
用作 a 中的元素,set
因为列表对象是可变且不可散列的。
另一方面,元组对象是不可变的和可散列的。
set.add
方法将提供的元素添加到set
.
主程序
my_set = set() my_set.add('bobby') my_set.add('hadz') my_set.add('com') print(my_set) # 👉️ {'com', 'hadz', 'bobby'}
Python 中的大多数不可变内置对象都是可散列的,而可变对象是不可散列的。
如果一个对象是可散列的,那么它可以用作 a 中的元素和字典中的键,因为这些数据结构在内部使用散列值。
set
可哈希对象包括 – str
、int
、bool
、tuple
、frozenset
。
不可散列的对象包括 – list
、dict
、set
。
请注意,tuples
仅frozensets
当它们的元素可哈希时,才可哈希。
您可以通过将对象传递给内置hash()
函数来检查对象是否可哈希。
主程序
print(hash('bobbyhadz.com')) # 👉️ -7027138092780560788 # ⛔️ TypeError: unhashable type: 'list' print(hash(['bobby', 'hadz', 'com']))
散列函数返回传入对象的散列值(如果有的话)。
哈希值是整数,用于在字典查找期间比较字典键。
可散列对象的散列值在其生命周期内永远不会改变。这就是为什么大多数不可变对象是可哈希的,而可变对象是不可哈希的。
像列表这样的对象是可变的,因为列表的内容可以改变。
主程序
my_list = ['bobby', 'hadz', 'com'] my_list[0] = 'new' print(my_list) # ['new', 'hadz', 'com']
另一方面,包含原始值的元组是不可变的(和可散列的)。
主程序
my_tuple = ('bobby', 'hadz', 'com') # ⛔️ TypeError: 'tuple' object does not support item assignment my_tuple[0] = 'new'
对象中的元素set
可以是任何不可变类型。
类似地,字典由键索引,字典中的键可以是任何不可变类型,例如字符串或数字。
如果元组包含字符串、数字或元组,则它们只能用作 a 中的元素
set
和字典中的键。如果元组包含可变对象(例如列表),则它不能用作字典中的键或set
.