Python容器

发布于 2022-03-22  287 次阅读


列表list

通过方括号括起来的数据序列,可以进行重复数据的存放

创建列表:

1.创建空列表

a = []
a = list()

2.创建有初始值的列表

a = [1, 'hello', 2.3]
a = list([1, 'hello', 2.3])

获取元素

1.获取单个元素 a[index]

a = ['hello', 'python', 426]
#a[0] = a[-3] = 'hello'
#a[1] = a[-2] = 'python'
#a[2] = a[-1] = 426

注:index的范围为[-n, n-1], n为列表的大小

2.获取多个元素(切片)
list[begin : end : step]

a = [0, 1, 2, 3, 4, 5]
a[1 : 4 : 2] = [1, 3]
a[4 : 1 : -1] = [3, 2 , 1]
#特殊的:
#begin 默认为 0, end 默认为 n, step 默认为 1
#a[ : ] 取出所以元素
#a[begin : ] 取出[begin, n)元素
#a[ : end] 取出[0, end)元素

添加元素

1.appnd(value) 在列表末尾添加一个元素

a = [0, 1]
a.append(2)
#a = [0, 1, 2]

2.extend(iterable) 在列表末尾添加至少一个元素(本质为合并列表)

a = [0,1]
b = [0, 1]
c = [2, 3]
a.extend(c)
#a = [0, 1, 2, 3]
b.append(c)
#b = [0, 1, [2, 3]]

3.insert(index,value) 在指定位置(index)添加一个元素

a = [1, 2]
a.insert(0, 0)
#a = [0, 1, 2]

删除元素

1.pop(index) 删除指定位置(index)元素;若不指定index,则删除最后一个元素

a = [0, 1, 2]
a.pop()
#a = [0, 1]

b = [0, 1, 2]
b.pop(1)
#b = [0, 1]

2.remove(value) 删除value,若有多个value,只删除第一个

a = [0, 1, 2]
a.remove(1)
#a = [0, 2]

b = [0, 1, 2, 1]
b.remove(1)
#b = [0, 2, 1]

3.通过切片删除任意个元素(本质:修改片段为NULL)

a = [0, 1, 2]
a[1 : 1] =[]
a = [0, 1, 2]

b = [0, 1, 2]
b[1 : 3] =[]
b = [0]

获取指定元素的索引

1.index(value) 返回列表中第一个value的索引

a = ['hello', 'python', 'hello']
#a.index('hello') = 0

2.index(begin, end, value) 在指定范围[begin, end)中查找

a = ['hello', 'python', 'hello']
#a.index(1, 3, 'hello') = 2

修改列表

1.修改单个元素

a = [0, 1, 2]
a[2] = 3
#a = [0, 1, 3]

2.切片修改任意个元素

a = [0, 1, 2]
a[1 : 2] = [5, 6, 7]
#a = [0, 5, 6, 7, 2]

b = [0, 1, 2 ,3]
b[1 : 3] = [1]
#b = [0, 1, 3]

常用方法函数

1.sort(key, reverse) 和 sorted(iterable, key, reverse) 排序

a = [0, 2, 1, 5, 4, 3]
a.sort();
#a = [0, 1, 2, 3, 4, 5]
a.sort(reverse = True)
#a = [5, 4, 3, 2, 1, 0]

a = ['hello', 'python', 'abcdef']
a.sort()
#a = ['abcdef', 'hello', 'python']
a.sort(key = lambda i:len(i))
#a = ['hello', 'abcdef', 'python']
sorted()返回一个新的对象,其余与sort类似
a = [0, 2, 1, 5, 4, 3]
b = sorted(a)
#b = [0, 1, 2, 3, 4, 5]

2.reverse() 反转

a = ['hello', 'python', 'world']
a.reverse()
#a = ['world', 'python', 'hello']

3.clear() 清空列表

a = ['hello', 1, 'hahaha']
a.clear()
#a = []

4.del() 删除列表

字典dict

python的内置数据结构,可变序列。
使用键值对的方式存储数据,无序序列。

创建字典

1.创建空字典

a = {}
a = dict()

2.创建有初始值的字典

a = {'name':'Choas', 'age':20, 'sex':'female'}
a = dict(name = 'Chaos', age = 20 , sex = 'famale')

获取元素

1.dict[key]

print(a['name'])
#Choas

2.get(key)

print(a.get('name'))
#Choas

区别:如果key不存在,第一种方法会报错,第二种方法返回None。
dict.get(key,value)如果键不存在,返回value,默认为None。

修改元素

1.dic[key] = value

a = {'1':1}
a['1'] = 2
#a = {'1':2}

2.updata(dic)通过另一个字典更新字典

#有则更新,无则添加
a = {'name':'Choas', 'age':20}
b = {'age':22, 'sex':'famale'}
a.update(b)
#a = {'name':'Choas', 'age':22, 'sex':'famale'}

获取字典视图

a = {'name':'Choas', 'age':20, 'sex':'female'}

1.keys() 获得所有key

a.keys()
#['name', 'age', 'sex']
#返回类型不是列表,是dict_keys

2.values() 获得所有value

a.values()
#['Choas', 20, 'famale']
#返回类型不是列表,是dict_values

3.items() 获得所有键值对(元组形式)

a.items()
#[('name','Choas'), ('age', 20), ('sex','famale')]

key的判断

a = {'name':'Choas', 'age':20, 'sex':'female'}

'name' in a
#True

'age' not in a
#False

删除元素

a = {'name':'Choas', 'age':20, 'sex':'female'}

1.pop(key)

a.pop('name')
#a = {'age':20, 'sex':'female'}
#有name直接删除--有返回值,按键删除

a.pop('python','not find')
#没有python--可设置返回值:not find(默认None)

2.del(key)
有则删除,没有则报错

del a['name']
#a = {'age':20, 'sex':'female'}

3.popitem() 随机删除
随机删除:有返回值--返回元祖:删除的键值

a.popitem()
#('age':20)

4.clear() 清空列表

元组tuple

不可变序列

创建元组:

1.创建空元组

a = ()
a = tuple()

2.创建有初始值的元组

a = ('ptrhon', 2, 'hello')
a = tuple(('ptrhon', 2, 'hello'))
a = 'ptrhon', 2, 'hello'
#特别的,只有一个元素是必须加小括号和逗号
b = ('must',)

获取元素

a = (100, ['a',10], 'hello')
#a[1] = a['a',10]

特别的,元组不能变,但元组的元素可以是可变对象

a = (100, ['a',10], 'hello')
a[1] = 200
#报错,不可行
a[1].append(20)
#a = (100, ['a', 10, 20], 'hello')

集合set

使用大括号包含起来的一组数据,set中存放的数据是不能重复的,并且是没有存放顺序的,也就是没有下标的。
集合的元素只能是不可变对象。

创建集合:

1.创建空集合

a = set()

2.创建有初始值的列表

a = {1, 'hello', 2, 1, 'hello'}
#a = {1, 'hello', 2}
a = set([1, 'hello', 2, 1, 'hello'])
#a = {1, 'hello', 2}

添加元素

1.add()

a = {1, 'hello', 2}
a.add(3)
#a = {1, 'hello', 2, 3}

删除元素

1.remove(value)
只能删除集合中的值,否则报错。

a = {1, 'hello', 2}
a.remoe('hell0')
#a = {1, 2}

2.discard(value)
与remove相同,但删除不存在的值不会报错。
3.pop()
随机删除一个元素并返回

a = {1, 'hello', 2}
b = a.pop()
#a = {1, 2}
#b = 'hello'

集合运算

1.并集union() 或 |

a = {1, 2}
b = {2, 3}
c = a.union(b)
#等价于 c = a | b
#c = {1, 2, 3}

2.交集intersection() 或 &

a = {1, 2}
b = {2, 3}
c = a.intersection(b)
#等价于 c = a & b
#c = {2}

3.差集difference() 或 -

a = {1, 2}
b = {2, 3}
c = a.difference(b)
#等价于 c = a - b
#c = {1}

4.对称差集symmetric_difference() 或 ^

a = {1, 2}
b = {2, 3}
c = a.symmetric_difference(b)
#等价于 c = a ^ b
#c = {1, 3}

5.逻辑运算

#判断相等
==
#判断不等
!=
#判断子集
a.issubset(b)
a <= b
#判断真子集
<
#判断超集
a.issuperset(b)
a >= b
#判断真超集
>
#isdisjoin() 判断无交集
a = {1, 2}
b = {2, 3}
c = {3, 4}
a.isdisjoin(b) #FAlse
a.isdisjoin(c) #True