python面试题 学习笔记
第二章 列表、元组和字典``
1.去掉列表或元组中的重复元素
(1)列表和集合的区别:
a.集合没有重复的元素,而列表可以有重复的元素
b.集合中的元素与顺序无关,而列表中的元素与顺序有关
>>> a1 = [1,2,3]
>>> a2 = [3,2,1]
>>> print(a1 == a2)
False
>>> c1 = {1,2,3}
>>> c2 = {3,2,1}
>>> print(c1 == c2)
True
>>>
(2)集合的特性:
a.没有重复的元素
b.集合中的元素与顺序无关
(3)列表如何去重:
将列表转换为集合,再转换回列表,利用集合的性质去重。
2.集合的并与交集
集合不是按顺序存储的,所以不能按索引来删除。
(1)添加和删除集合中的元素
>>> x = {3,2,1}
>>> x.add(123)
>>> x
{123, 1, 2, 3}
>>> x
{123, 1, 2, 3}
>>> x.add(1)
>>> x
{123, 1, 2, 3}
>>> x.remove(123)
>>> x
{1, 2, 3}
(2)集合之间的运算
>>> x1 = {1,2,3}
>>> x2 = {3,4,5}
>>> print('x1和x2合并:',x1|x2)
x1和x2合并: {1, 2, 3, 4, 5}
>>> print('x1和x2合并:',x1.union(x2))
x1和x2合并: {1, 2, 3, 4, 5}
>>> print('x1和x2相交:',x1&x2)
x1和x2相交: {3}
>>> print('x1和x2相交:',x1.intersection(x2))
x1和x2相交: {3}
>>> print(x1.difference(x2)) #在x1中剔除x2中也有的元素
{1, 2}
>>> print(x1^x2) #刨除x1和x2共用的元素,返回值是集合并的子集
{1, 2, 4, 5}
3.如何让两列表首尾相接
(1)连接列表的方式有两种:+和extend,元组只有一种:+
>>> a = [1,5,7,9,6]
>>> b = [2,3,3,6,8]
>>> print(a+b)
[1, 5, 7, 9, 6, 2, 3, 3, 6, 8]
>>> a
[1, 5, 7, 9, 6]
>>> b
[2, 3, 3, 6, 8]
>>> a.extend(b)
>>> print(a)
[1, 5, 7, 9, 6, 2, 3, 3, 6, 8]
(2)元组和列表连接的差异
a. +不会改变参与连接的列表的值,但extend方法可以改变a列表的值
b. +两侧的操作数必须是一致的,都是列表或者都是元组,不能混合加。extend方法可以将一个元组连接到列表后面。由于元组是只读的,所以没有元组extend方法。