Python里创建集合,那可真是太方便了!比我早上起来煮个鸡蛋羹都快。说真的,当初学Python,最喜欢的就是它简洁明了的语法,创建集合这事儿,更是体现得淋漓尽致。

想创建集合,最常用的方法,当然是set()函数啦。这玩意儿就像个魔术棒,能把任何可迭代对象,注意是可迭代对象,变成一个集合。啥是可迭代对象?列表、元组、字符串,甚至字典(不过字典只会把键拿出来),都可以往set()里扔。

比如,我有个列表,里面装着我最喜欢的几种水果:fruits = ["apple", "banana", "orange", "apple"],注意,这里面”apple”出现了两次。如果我想知道我到底喜欢几种不同的水果,就可以这样:

python
fruits = ["apple", "banana", "orange", "apple"]
unique_fruits = set(fruits)
print(unique_fruits) # 输出: {'orange', 'banana', 'apple'}

看到没?重复的 “apple” 自动被去掉了,这就是集合最大的特点:元素唯一

set()创建空集合,也是必须的!empty_set = set()。 很多人容易犯一个错误,想当然地以为empty_set = {}就能创建一个空集合。 错!大错特错!这样创建的是一个空字典!血的教训啊,我之前就因为这个debug了半天。

除了set()函数,还有一种更简洁的创建集合的方法:直接用花括号 {} 。 就像创建字典一样,只不过字典里面是键值对,而集合里面只有值。

python
my_set = {1, 2, 3, 4, 5}
print(my_set) # 输出: {1, 2, 3, 4, 5}

这种方法创建集合,简单粗暴,特别适合元素比较少的情况。但是!切记!不能用 {} 创建空集合!因为这会被Python解释器认为是创建空字典。血泪教训,再强调一遍!

所以,总结一下,创建集合有两种主要方法:

  1. set(iterable):将可迭代对象转换为集合。 强烈推荐,尤其是你需要从列表、元组等转换的时候。
  2. {element1, element2, ...}:直接用花括号创建集合。 适用于元素较少且已知的情况,而且不能用来创建空集合。

集合这东西,除了元素唯一之外,还有很多有用的操作。比如,求并集、交集、差集等等。这些操作在处理数据的时候,简直不要太方便。

比如,我有个集合A,里面是所有学Python的人,还有个集合B,里面是所有学Java的人。我想知道既学Python又学Java的人有哪些,就可以用交集操作:

“`python
python_students = {“Alice”, “Bob”, “Charlie”}
java_students = {“Bob”, “David”, “Eve”}

both_languages = python_students.intersection(java_students)
print(both_languages) # 输出: {‘Bob’}
“`

看看,Bob同学真优秀,两门语言都学了!

再比如,我想知道只学Python没学Java的人有哪些,就可以用差集操作:

“`python
python_students = {“Alice”, “Bob”, “Charlie”}
java_students = {“Bob”, “David”, “Eve”}

python_only = python_students.difference(java_students)
print(python_only) # 输出: {‘Charlie’, ‘Alice’}
“`

Alice和Charlie同学,专注于Python,不错!

当然,还有并集union(),超集issuperset(),子集issubset()等等,这些方法都非常实用,具体用法可以查阅Python官方文档。

除了这些基本操作,集合还有一些高级用法。比如,可以用frozenset()创建不可变集合。啥意思?就是创建之后就不能修改的集合。这个有什么用呢? 最大的用处就是可以作为字典的键或者集合的元素,因为字典的键和集合的元素都必须是不可变的。

python
my_frozenset = frozenset([1, 2, 3])
my_dict = {my_frozenset: "value"} # 可以作为字典的键
my_set = {my_frozenset} # 可以作为集合的元素

如果你尝试用可变集合作为字典的键或者集合的元素,Python会报错。

还有一点需要注意,集合里的元素必须是可哈希的。啥意思?就是必须是不可变的对象,比如数字、字符串、元组等等。列表和字典不能作为集合的元素,因为它们是可变的。

总而言之,Python的集合是一个非常强大的数据结构,掌握了它的基本用法和一些高级技巧,可以大大提高你的编程效率。创建集合,用set()或者{}都很方便,但是一定要注意创建空集合的时候,要用set(),千万不要用{}! 避免重蹈我的覆辙,那可是浪费时间啊! 还有,记住集合的元素必须是唯一的,而且是可哈希的。

希望这篇文章能帮助你快速掌握Python集合的创建和使用。 以后再遇到需要去重或者进行集合运算的场景,就能信手拈来了。 Python的集合,真的值得你花时间去学习和掌握!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。