列表,元祖,字典和集合的常用操作

关于列表list

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

l = list()   # 创建了一个空列表l
l1 = [1,2,3,4]  # 列表用中括号表示
l2 = list(range(10))    # 创建了一个[0,1,2,3,4,5,6,7,8,9]的列表
len(l1)   # 输出结果4,表明列表l1中有4个元素
l1[0]   # 列表l1中从左往右数第1个元素
l1[3]   # 列表l1中从左往右数第4个元素
l1[-1]  # 列表l1中从右往左数第1个元素,也就是列表最后一个元素
l2[-4]  # 列表l2中从右往左数第4个元素
l1.append(5)   # 在列表l1的末尾追加一个元素5
l2.insert(2,"a")   # 在列表l2的从左往右第3个位置插入一个元素"a"
l1.pop()或者l1.pop(2# 删除列表最后1个元素或者指定位置的元素
l3 = [1,2,[1,2],[4,5,6]]  # 嵌套列表
l3[2][0]   # 取列表l3中从左往右第3个元素,得到列表[1,2],在取其中的第1个元素

关于元祖tuple

另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改。

t = t()  # 创建一个空元祖
t = (1,2,3,4)   # 元祖用小括号表示
t = (1,)   '''创建只有1个元素的元祖时需要加上逗号,
防止被当作运算符中的小括号直接返回1'''
t = (1,2,[1,2],[3,4,5])   # 元祖的list不可变,但是元祖中的list的元素可变

关于字典dict

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}   # 字典用大括号表示
d['Michael']    # 访问某个键对应的值
d['Michael'] = 88    '''通过key把值放入,由于一个key只能对应一个value,
所以,多次对一个key放入value,后面的值会把前面的值冲掉'''
'Michael' in d    # 通过in判断key是否存在
d.get('Michael',-1) 或d.get('Michael')
# 通过get看key是否存在,如果不存在,返回指定的-1或者默认None
# 返回None的时候Python的交互环境不显示结果
d.pop('Bob')    # 删除某一key及其对应的value

dict内部存放的顺序和key放入的顺序是没有关系的
查找和插入的速度极快,不会随着key的增加而变慢
但是和list相比,dict需要占用大量的内存,内存浪费多
所以,dict是用空间来换取时间的一种方法
dict的key必须是不可变对象, 因为dict根据key来计算value的存储位置
通过key计算位置的算法称为哈希算法(Hash)
在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key

关于集合set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key

s = set([1,2,3,4])     # 提供一个list作为输入创建集合
s = {1234}
s.add(5)      # 添加5到set中,重复添加不会有效果,因为set中没有重复的元素
s.remove(4)    # 删除set中的某个元素4
s1 = {1,2,6}
s1 & s     # 数学中集合的交集运算
s1 | s     # 数学中集合的并集运算

set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。把list放入集合中就会报错unhashable type: ‘list’

猜你喜欢

转载自blog.csdn.net/weixin_42864639/article/details/81670640