在 Python 中将列表添加到集合

在 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

  1. 使用tuple()该类将列表转换为元组。
  2. 使用set.add()方法将 添加tuple到 中set
  3. 元组是不可变的,可以添加到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

可哈希对象包括 – strintbooltuplefrozenset

不可散列的对象包括 – listdictset

请注意,tuplesfrozensets当它们的元素可哈希时,才可哈希。

您可以通过将对象传递给内置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.

发表评论