Python - 访问 Set Items



Access Set 项目

访问 set 项的主要方法是使用循环遍历 set,例如 for 循环。通过迭代集合,您可以逐个访问每个元素,并根据需要对它们执行操作。

在 Python 中,集合是唯一元素的无序集合,与序列(例如列表Tuples)不同,集合没有其元素的位置索引。这意味着您无法通过指定索引来直接访问集合的各个元素。

此外,集没有像字典那样具有与其元素关联的键。在字典中,每个元素都与一个键配对,允许您访问与特定键关联的值。但是,集合没有这种键值对。

因此,要访问集合的元素,我们需要使用 for 循环(或列表推导式)

使用 For 循环访问 Set 项

Python 中的 for 循环是一个控制流语句,用于迭代序列并为序列中的每个元素执行一个代码块。循环将继续,直到处理完所有元素。

我们可以通过按顺序迭代集合中的每个元素来使用 for 循环来访问集合项。由于 sets 是唯一元素的无序集合,因此 for 循环提供了一种遍历 set 并逐个访问每个元素的便捷方法。

在下面的示例中,for 循环遍历设置的 “langs”,并且在每次迭代中,变量 “lang” 被分配当前元素的值 -


# Defining a set
langs = {"C", "C++", "Java", "Python"}

# Accessing set items using a for loop
for lang in langs:
	 	print (lang)

它将产生以下输出 -

Python
C
C++
Java

使用列表推导式访问设置项

列表推导式是在 Python 中创建列表的一种有效方法。它允许您通过对可迭代对象中的每个项目应用表达式来生成新列表,并可选择包含用于筛选元素的条件。

我们可以通过将集合转换为推导式中的列表来使用列表推导式来访问集合项。这允许您迭代设置的元素并对其执行操作,类似于使用 for 循环。

在这个例子中,我们使用列表推导式通过迭代 “my_set” 的每个元素来访问集合项 -


my_set = {1, 2, 3, 4, 5}
# Accessing set items using list comprehension
accessed_items = [item for item in my_set]
print(accessed_items)

我们得到的输出如下所示 -

[1, 2, 3, 4, 5]

从集合中访问子集

从数学上讲,子集是仅包含也包含在另一个集合中的元素的集合。换句话说,子集的每个元素也是原始集的一个元素。如果集合 A 的每个元素也是集合 B 的元素,则 A 被视为 B 的子集,表示为 AB

在 Python 中,您可以使用 set 操作或通过迭代幂集(所有子集的集合)并根据特定条件进行筛选来访问集中的子集。

  • 使用 Set 操作 - 您可以使用内置的 set 操作(例如 issubset() 函数)来检查一个 set 是否是另一个 set 的子集。
  • 迭代 Power Set - 迭代集合的所有可能子集,并根据特定条件进行筛选以访问特定子集。

以下是演示如何从集合中访问子集的基本示例 -


import itertools

# Defining a set
original_set = {1, 2, 3, 4}

# Checking if {1, 2} is a subset of the original set
is_subset = {1, 2}.issubset(original_set)
print("{1, 2} is a subset of the original set:", is_subset)

# Generating all subsets with two elements
subsets_with_two_elements = [set(subset) for subset in itertools.combinations(original_set, 2)]
print("Subsets with two elements:", subsets_with_two_elements)

以下是上述代码的输出 -

{1, 2} is a subset of the original set: True
Subsets with two elements: [{1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {3, 4}]

检查设置项是否存在

您可以使用 Python 的成员资格运算符 in not in 检查某个项目在集合中是否可用。

如果在集合中找到指定的元素,则 in 运算符返回 True,否则返回 False。相反,如果元素不存在,则 not in 运算符返回 True,如果元素存在,则返回 False

在下面的示例中,“in”运算符验证项目“Java”是否存在于集合“langs”中,而“not in”运算符检查项目“SQL”是否不存在于集合中 -


# Defining a set
langs = {"C", "C++", "Java", "Python"}

# Checking if an item exists in the set
if "Java" in langs:
	 	 print("Java is present in the set.")
else:
	 	 print("Java is not present in the set.")

# Checking if an item does not exist in the set
if "SQL" not in langs:
	 	 print("SQL is not present in the set.")
else:
	 	 print("SQL is present in the set.")

它将产生以下输出 -

Java is present in the set.
SQL is not present in the set.