python的列表字典 手写笔记差点意思,电视剧追完了怎么办?

最近看了的相关理论,总觉得看一章写一页的手写笔记差点意思,今天刚好把该追的电视剧追完了,就来写个总结吧!作为我CSDN的开端~

目录

1.简单介绍 1.1 列表(list):

存储不同类型的数据,就像一个杂货铺,啥都可以有。数据用“ [ ] ” 装起来。

1.2 元组(tuple):

就像小甲鱼(我的参考书作者)说的,元组是一个上了枷锁的列表,它和列表的最大区别就是:它不可改变!元组的灵魂是' , ' 没有逗号会被判断为 int 。

煮个栗子~~

x = (1,)
print('x是', type(x))  #判断x的类型
y = (1)
print('y是', type(y))  #判断y的类型
z = 1,
print('z是', type(z))  #判断z的类型

程序运行结果:(可以看到只要有逗号在python的列表和字典,系统就会判断其为元组)

x是 
y是 
z是 

列表和元组的异同点总结:

同: 1.都属于迭代对象,支持索引和分片操作

2.都支持重复运算( * )和合并运算( +)

3.都支持len() , max() , min()等系统内置函数

4.列表和元组都可以相互转化( tuple() / list() )

异:元组不可进行修改python的列表和字典 手写笔记差点意思,电视剧追完了怎么办?,所以列表的添加、修改、删除元素的方法都不能用在元组上。但是可以 用del删除整个元组。

从上面几点来看,列表好像比元组实用多了,但是存在即合理,元组的特性决定了它拥有比列表更快的速度,比列表更安全,更容易维护。

1.3 字典(dict ):

的字典就相当于数学的映射,区别于序列(上述的列表和元组都属于学序列)用索引获取对应值,字典使用的是key:valuepython的列表和字典,即一个键和对应值为一项。

字典不讲顺序,只讲映射,其标志性符号为“{ } ”。要注意一点,字典的键必须唯一python的列表和字典 手写笔记差点意思,电视剧追完了怎么办?,但其值可以取任何不可变的数据类型(字符串、元组、数等)。

1.4 集合(set):

集合必须记住两个词——唯一!无序!集合是没有索引或者映射关系的,所以这注定了集合中的某个数据不能被引用。

运用集合的性质,可以对列表等进行去重操作,操作如下:

list1 = [1,1,2,2,'a']
list1 = list( set(list1) )
print(list1)

程序运行结果:

[1, 2, 'a']

2.创建 2.1 创建列表

number1 = []  #创建空列表
print(number1)
number2 = [1, 'a', [1,2]]  #什么都能加!
print(number2)
number3 = list(range(4))  #list()创建列表
print(number3)

程序运行结果:

[]
[1, 'a', [1, 2]]
[0, 1, 2, 3]

2.2 创建元组

temp1 = ()  #创建空元组
print(temp1)
temp2 = (1,2,3,4,'x')
print(temp2)
temp3 = tuple(range(4))  #tuple()创建元组
print(temp3)

程序运行结果:

()
(1, 2, 3, 4, 'x')
(0, 1, 2, 3)

2.2 创建字典

dict1 = {}  #创建空字典
print(dict1)
dict2 = {1:'我', 2:'爱', 3:'你'}
print(dict2)
dict3 = dict((('a', 10), ('b', 20), ('c', 30)))  #用dict()函数创建字典,因为函数的参数只能是一个序列,所以要把多个元组打包成一个序列
print(dict3)
dict4 = dict(d = 40, e = 50, f = 60)  #这个相比上一个会简洁些,要注意的是这个方法的键不能加引号,不然会报错
print(dict4)

程序运行结果:

{}
{1: '我', 2: '爱', 3: '你'}
{'a': 10, 'b': 20, 'c': 30}
{'d': 40, 'e': 50, 'f': 60}

2.4 创建集合

set1 = {1, 2, 3, 3}
print(set1)
set2 = set(['a', 'b', 'c'])  #用set()函数
print(set2)
set3 = frozenset({4, 5, 6})  #创建冰冻集合,就是不可改变的集合
set3.add(7)  #如果你非要改它,它就会生气地报错

程序运行结果:(自动去重)

{1, 2, 3}
{'b', 'a', 'c'}
Traceback (most recent call last):
  File "E:\PycharmProjects\11111\2.py", line 2, in 
    set3.add(7)
AttributeError: 'frozenset' object has no attribute 'add'

3.查找 3.1 查找列表元素

number = ['xx', 1, 2, 3, [4, 5]]
#查找单个元素
print(number[0])  #查找列表第一个数据
print(number[4][0])  #查找列表第5个数据中的第一个数据
#查找多个元素(列表分片)
print(number[0: 2])  #一个冒号隔开两个索引值,左边是开始位置(包含),右边是结束位置(不包含)
print(number[:2])  #没有开始位置时,默认位置是0
print(number[2:])  #没有结束位置时同理
#拓展
print(number[0:4:2])  #这里的第三个元素表示的是步长,这个例子的意思就是在列表的第1-4个元素中,每两个数字取一个,即取number的第1、3个元素
print(number[::-1])  #步长取-1时,可以理解为列表的反转操作
#查找元素在列表中的位置
print(number.index('xx'))   #用到index()函数
print(number.index(1, 3, 5))  #查找元素1在序列的[3,5]中出现的位置

程序运行结果:

xx
4
['xx', 1]
['xx', 1]
[2, 3, [4, 5]]
['xx', 2]
[[4, 5], 3, 2, 1, 'xx']
0
3

3.2 查找元组元素

元组的元素查找和列表基本是一样哒

temp = (1,2,3,4,'x')
#单个元素
print(temp[0])
#多个元素
print(temp[:1])
print(temp[1:])

程序运行结果:

1
(1,)
(2, 3, 4, 'x')

3.3 查找字典元素

dict = {'a':'我', 'b':'爱', 'c':'你', 'd':'哦'} 
print(dict['a'])
print(dict.keys())  #keys()访问字典的键
print(dict.values())  #values()访问字典的键的值
print(dict.items())  #items()访问字典的项——即键和对应的值
#get()
print(dict.get('a'))
print(dict.get(1))  #当输入的键不存在时,返回None
print(dict.get(1,'找不到'))  #当输入的键不存在时,指定输出的内容
#setdefault() 和 get()类似
print(dict.setdefault('a'))
print(dict.setdefault(1))  #当输入的键不存在时,自动添加键,对应的值为None
print(dict)

程序运行结果:

我
dict_keys(['a', 'b', 'c', 'd'])
dict_values(['我', '爱', '你', '哦'])
dict_items([('a', '我'), ('b', '爱'), ('c', '你'), ('d', '哦')])
我
None
找不到
我
None
{'a': '我', 'b': '爱', 'c': '你', 'd': '哦', 1: None}

3.4查找集合元素

上面说到集合是无序的,不能用索引这些东东来访问,但是能通过for循环迭代出来

set = {1,2,3}
for each in set:
    print(each, end=' ')  #打印出集合的每个元素,分隔符为' '

程序运行结果:

1 2 3

4.添加 4.1 列表添加元素

用到的是() 、() 、()函数

number = []
number.append(1)  #appemd 添加元素
number.append([4,5])  #append添加数组
number.extend([2,3]) #extend  添加数组
number.insert(0,'xx')  #insert  指定位置添加元素
print(number)

程序运行结果:

['xx', 1, [4, 5], 2, 3]

4.2 元组添加元素

之前说过元组是不可改变的python的列表和字典,如果一定要改变,就只能通过拷贝元组的片段,构造一个新的元组

temp = (1,2,3,4)
new_temp = temp[:1] + ('xx',) + temp[1:]  #相当于在原元组中的第二个位置插入'xx'
print(new_temp)

程序运行结果:

(1, 'xx', 2, 3, 4)

4.3 字典添加元素

用到的是()函数

dict1 = {}
dict1 =dict1.fromkeys(('a', 'b'))  #没有给键赋值,默认返回None
print(dict1)
dict1 = dict1.fromkeys(('a', 'b', 'c'),(1, 2))  #第二个参数传入键的值,不支持分别传入
print(dict1)

程序运行结果:

{'a': None, 'b': None}
{'a': (1, 2), 'b': (1, 2), 'c': (1, 2)}

4.4 集合添加元素

集合的添加很简单,用add()和()

set1 = {'我', '是'}
set1.add('大聪明')
print(set1)
x = [1,2,3]
set1.update(x)  #update()可用来添加可迭代对象
print(set1)

程序运行结果:

{'是', '我', '大聪明'}
{1, 2, 3, '我', '是', '大聪明'}

集合的运算 5.修改 5.1 修改列表

x = [1,3,2,5]
x[0], x[1] = x[1], x[0]  #交换列表第一个、第二个元素顺序
print(x)
x.sort(reverse=True)  #降序排序
print(x)
x[2] = 'abc'  #把第三个元素修改成‘abc’
print(x)
x = x * 2  #字面意思:两个x
print(x)
y = 'abc'
x = list(y)  #list()把字符串的每个字符放到列表 这个操作会替换掉列表原有的数据
print(x)
x = list((1,2,3))
print(x)

程序运行结果:

[3, 1, 2, 5]
[5, 3, 2, 1]
[5, 3, 'abc', 1]
[5, 3, 2, 1, 5, 3, 2, 1]
['a', 'b', 'c']
[1, 2, 3]

利用分片修改列表:

关于分片的相关操作,不理解的请看主页的分片总结

x = [1,3,2,5]
print(x)
#连续区域的修改
x[0:2] = [40,50,60,70]  #新内容必须是一组元素,若是单个元素会报错
print(x)
#非连续区域的修改
x[0:4:2] = ['月薪', '十万']  #新内容的个数需要和选中的非连续区域个数相同
print(x)

程序运行结果:

[1, 3, 2, 5]
[40, 50, 60, 70, 2, 5]
['月薪', 50, '十万', 70, 2, 5]

5.2 修改字典

用到的是()函数,在上面字典添加中提到的()函数也能起到修改函数的作用,在这里就不重复讲了

dict1 = {'a':'我', 'b':'爱', 'c':'你', 'd':'哦'} 
dict1.update(a='他')
print(dict1)

程序运行结果:

{'a': '他', 'b': '爱', 'c': '你', 'd': '哦'}

6.删除

主要是del、()和pop()两个方法,del删除整个序列,()删除指定元素,pop()删除指定位置的元素,除此之外pop()还能弹出被删除的元素信息

6.1 删除列表元素

x = [1, 3, 2, 5, 7]
x.remove(2)  #remove()删除指定元素
print(x)
print(x.pop())  #pop()删除列表最后一个元素(默认)  print()显示pop出的元素
print(x)
x.pop(1)  #pop()删除第二个元素
print(x)
del x[1]  #del 删除第二个元素
print(x)
del x  #del+列表名 删除列表

程序运行结果:

[1, 3, 5, 7]
7
[1, 3, 5]
[1, 5]
[1]

6.2 删除字典元素

dict1 = {'a':'我', 'b':'爱', 'c':'你', 'd':'哦'}
dict1.pop('a')  #pop()给定键弹出指定元素
print(dict1)
dict1.popitem()  #popitem()弹出一个项
print(dict1)
dict1.clear()  #clear()清空字典
print(dict1)
del dict1  #del 删除字典

程序运行结果:

{'b': '爱', 'c': '你', 'd': '哦'}
{'b': '爱', 'c': '你'}
{}

6.3 删除集合元素

set1 = {1, 2, 3, 4}
set1.remove(4)  #remove()删除指定元素
print(set1)
set1.clear()  #清空集合
print(set1)
del set1  #del 删除集合

程序运行结果:

{1, 2, 3}
set()

7.其他 7.1 复制

上面说到( :)可以用来进行列表的分片,而( :)还有一个功能就是复制,例如:

x1 = [1,3,2,5,7]
x2 = x1[:]
print(x2)
x1.sort()  #复制出来的x2是独立的,不会因x1的变化而变化
print(x2)

程序运行结果:

[1, 3, 2, 5, 7]
[1, 3, 2, 5, 7]

7.2 ()

上面有提到sort是排序,那么也差不多是这个意思,不同的是返回的是一个完成排序的新列表,对原表并不影响

x = [1,3,2,5,7]
y = sorted(x)
print(y)
print('原表:', x)

程序运行结果:

[1, 2, 3, 5, 7]
原表: [1, 3, 2, 5, 7]

当列表由多字段组成时,想要对字段指定元素进行排序,就要用到keys= 元素:元素[索引]。字典也适用

#把list按字段第一个元素从小到大排序
list = [("A", 70), ("C", 85), ("E", 90), ("B", 66), ("G", 82), ("F", 77), ("D",54)]
list1 = sorted(list, key=lambda x : x[0])  #这里的x可以是任何字母
print(list1)
dict = {"A": 70, "C": 85, "E": 90, "B": 66, "G": 82, "F": 77, "D": 54}
#把test按键从小到大排序
dict1 = sorted(dict.items(), key=lambda item:item[0])
print(dict1)
#把test按值从大到小排列
dict2 = sorted(dict.items(), key=lambda item: item[1], reverse=True)
print(dict2)

程序运行结果:

[('A', 70), ('B', 66), ('C', 85), ('D', 54), ('E', 90), ('F', 77), ('G', 82)]
[('A', 70), ('B', 66), ('C', 85), ('D', 54), ('E', 90), ('F', 77), ('G', 82)]
[('E', 90), ('C', 85), ('G', 82), ('F', 77), ('A', 70), ('B', 66), ('D', 54)]

7.3 sum()

这个很+简单,就是算出序列的总和

x = [1,2,3,4]
print(sum(x))

程序运行结果:

10

7.4 ()

()是翻转列表,那么()也八九不离十,要注意的是()返回的是迭代器对象,,什么意思呢,看个栗子就知道啦

x = [1,2,3,4]
print(reversed(x))
#通过for循环迭代,就返回逆向迭代序列的值啦
for each in reversed(x):  
    print(each, end=' ')

程序运行结果:


4 3 2 1 

7.5 () 生成二元组

x = 'abc'
for each in enumerate(x):
    print(each)

程序运行结果:

(0, 'a')
(1, 'b')
(2, 'c')

7.6 zip()

zip()用来返回由可迭代参数组成的元组

x = 'abc'
y = [1, 2, 3]
z = (11, 22, 33)
for each in zip(x, y, z):
    print(each)

程序运行结果:

('a', 1, 11)
('b', 2, 22)
('c', 3, 33)

7.7 字典排序

test = {"A": 70, "C": 85, "E": 90, "B": 66, "G": 82, "F": 77, "D": 54}
#把test按键从小到大排序
test1 = sorted(test.items(), key=lambda item: item[0])
print(test1)
#把test按值从小到大排列
test2 = sorted(test.items(), key=lambda item: item[1])
print(test2)

程序运行结果:

[('A', 70), ('B', 66), ('C', 85), ('D', 54), ('E', 90), ('F', 77), ('G', 82)]
[('D', 54), ('B', 66), ('A', 70), ('F', 77), ('G', 82), ('C', 85), ('E', 90)]

那么关于列表元组字典集合的总结就暂时写到这里,后续如果想到遗漏部分会补充,文案代码如果有错误也希望大家指正~掰掰!