Python47讲迭代器测试题5中的set数据结构是什么概念?
各位大佬:5. 在 Python 原生支持的数据结构中,你知道哪一个是只能用迭代器访问的吗?7DsUFS);
pZ10'iJ7YB2.#"X+DsU<RG
答:set。对于原生支持随机访问的数据结构(如tuple、list),可以使用迭代器或者下标索引的形式访问,但对于无法随机访问的数据结构 set 而言,迭代器是唯一的访问元素的方式。
我的印象中, set都是和设置、赋值等语句联系在一起的,现在怎么又和tuple,list 放在一起了? set数据结构是个啥东东?{:10_258:} set 就是集合的意思
和你必修一学的集合差不多一样 set是集合
跟tuple,list放在一起,是因为他们都属于容器
a =
b = (1,2,3)
c = {1,2,3}
现在定义三个容器a、b、c,都装有1、2、3三个元素
我们可以通过a,b这样的切片方式来拿到我们想要的元素
但是因为集合具有无序性,我们尝试对c进行切片的话,会引发 TypeError
>>> c
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
c
TypeError: 'set' object is not subscriptable
我们想要访问set中的元素只能通过迭代器访问
>>> for each in c:
print(each)
1
2
3
>>> c_iter = iter(c)
>>> next(c_iter)
1
>>> next(c_iter)
2
>>> next(c_iter)
3 柿子饼同学 发表于 2021-4-11 09:58
set 就是集合的意思
和你必修一学的集合差不多一样
能详细讲讲吗?举个例子最好。为嘛只能用迭代器?没有下标?没下标不是也可以用 in 语句搞定吗? 本帖最后由 柿子饼同学 于 2021-4-11 10:10 编辑
darchir 发表于 2021-4-11 10:06
能详细讲讲吗?举个例子最好。为嘛只能用迭代器?没有下标?没下标不是也可以用 in 语句搞定吗?
>>> a = {1, 2, 3, 4, 5}
>>> a
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a
TypeError: 'set' object is not subscriptable
>>> for i in a:
print(i)
1
2
3
4
5
>>> type(a)
<class 'set'>
>>>
你看看,集合不能用下标访问,只能用循环或者迭代器>>> s = iter(a)
>>> next(s)
1
>>> next(s)
2
>>> next(s)
3
>>> darchir 发表于 2021-4-11 10:06
能详细讲讲吗?举个例子最好。为嘛只能用迭代器?没有下标?没下标不是也可以用 in 语句搞定吗?
集合具有互异性,里面不能有重复的元素
>>> a = {1, 2, 2, 2, 3, 4}
>>> a
{1, 2, 3, 4}
集合具有无序性,里面元素的顺序可以颠倒
>>> a = {1, 2, 3}
>>> b = {3, 2, 1}
>>> a == b
True darchir 发表于 2021-4-11 10:06
能详细讲讲吗?举个例子最好。为嘛只能用迭代器?没有下标?没下标不是也可以用 in 语句搞定吗?
有下标,就意味着有顺序。那就和列表没啥区别了,那设计set集合这个类型,就有点多余了。
一种种数据结构/类型 之间,都是有特定区分度,有其各自特点的,也是为了专门处理它们合适的场景。
知道 列表、元组、集合 三者都是“容器”,有各自的不同特点,知道怎样用就好了。 跟你们混,真是涨知识啊!
页:
[1]