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解释器认为是创建空字典。血泪教训,再强调一遍!
所以,总结一下,创建集合有两种主要方法:
set(iterable)
:将可迭代对象转换为集合。 强烈推荐,尤其是你需要从列表、元组等转换的时候。{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的集合,真的值得你花时间去学习和掌握!
评论(0)