Python 面试题, Python 有哪些内置数据结构?
Python 面试题, Python 有哪些内置数据结构?
QA
Step 1
Q:: Python有哪些内置数据结构?
A:: Python提供了多种内置数据结构,其中包括:
1.
列表(List):有序、可变的序列类型,支持多种数据类型的元素。
2.
元组(Tuple):有序、不可变的序列类型,适合用作键值对的键。
3.
字典(Dictionary):无序的键值对集合,键必须是不可变类型,值可以是任意类型。
4.
集合(Set):无序、唯一元素的集合,支持集合运算。
5.
字符串(String):不可变的字符序列,广泛用于文本处理。
Step 2
Q:: 列表(List)和元组(Tuple)的区别是什么?
A:: 列表和元组的主要区别在于可变性:
1.
列表是可变的,这意味着你可以在列表中添加、删除或修改元素。
2.
元组是不可变的,一旦创建后,不能修改其内容。这使得元组在需要保证数据不被改变时非常有用。此外,元组可以作为字典中的键,而列表则不可以。
Step 3
Q:: 字典(Dictionary)如何处理键的冲突?
A:: 字典使用哈希表来实现。当两个不同的键具有相同的哈希值时(即发生哈希冲突),Python使用链表法来解决冲突,即在哈希表的槽中存储一个链表,所有具有相同哈希值的键值对都被存储在这个链表中。如果查找一个键,则沿着链表逐一比较其值,直到找到所需的键或链表末尾。
Step 4
Q:: 如何判断一个对象是否是可变的?
A:: 在Python中,可变对象包括列表、字典、集合等;不可变对象包括字符串、元组、数字等。判断一个对象是否可变,可以尝试修改对象的内容并观察是否会引发异常。例如,尝试修改一个元组的元素将引发TypeError异常,而修改列表的元素不会。
Step 5
Q:: 集合(Set)与字典(Dictionary)在实现上的主要区别是什么?
A:: 集合和字典都基于哈希表实现,但它们的用途和结构不同:
1.
集合(Set)只存储单个元素且元素唯一,无序,主要用于成员资格测试和去重操作。
2.
字典(Dictionary)存储键值对,键必须唯一,值可以重复。字典的键是集合的扩展,允许关联一个值。