1、列表可以作为集合的元素吗?
2、集合可以作为列表的元素吗?
3、元组可以作为集合的元素吗?
4、集合可以作为元组的元素吗?
5、字典可以作为集合的元素吗?
对于上面这五个问题,是不是不太懂呢?接下来我会一一解答。
一、第一个问题:
首先我们需要知道什么可以作为集合的元素。集合对象是一组无序排列***可哈希***的值,集合成员可以做字典中的键。那么可哈希与不可哈希是什么意思呢?
简要的说可哈希的数据类型,即不可变的数据结构(字符串str、元组tuple、对象集objects);同理,不可哈希的数据类型,即可变的数据结构 (集合set,列表list,字典dict)
>>> set1={[1,2,3,4],4,5,6}c
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
set1={[1,2,3,4],4,5,6}
TypeError: unhashable type: 'list'
注:unhashable是“不可哈希的”的意思
可见,报错了。所以列表不可以作为集合的元素.
二、第二个问题:
那么列表的元素可以有哪些呢?列表没有长度限制,元素类型可以不同,使用非常灵活。看例子:
>>> list1=[{1,2,3,4},4,5,6]
>>> list1
[{1, 2, 3, 4}, 4, 5, 6]
>>>
说明集合可以作为列表的元素。
三、第三个问题:
在第一个小问中说到,元组(tuple)是不可变的数据结构(可哈希的数据类型),因此,是可以作为集合元素的。
>>> set2={(1,2,3,4,5),6,7,8}
>>> set2
{8, (1, 2, 3, 4, 5), 6, 7}
>>>
四、第四个问题:
元组与列表类似,不同之处在于元组的元素不能修改具体用法我这里不在赘述。
>>> tuple1=({1,2,3,4,5},89,5)
>>> tuple1
({1, 2, 3, 4, 5}, 89, 5)
>>>
所以集合可以作为元组的元素。
五、第五个问题:
因为字典是可变的数据结构(不可哈希),所以自然也不能作为集合的元素。
>>> set1={{'Name': 'Runoob', 'Age': 7, 'Class': 'First'},4,5,6}
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
set1={{'Name': 'Runoob', 'Age': 7, 'Class': 'First'},4,5,6}
TypeError: unhashable type: 'dict'
>>>
附上一张表:
观看顺序:ex:字符串可以作为列表的元素 列表可以作为列表的元素…