Python学习笔记3

一、列表

1、列表可以放不同的数据类型,而且列表可变。

ls = ["Python", 2020, [9, 19], {"ZhangSan":23}]

2、用list(可迭代对象)生成列表,包括字符串、元组、集合、range()

list("123456789")
#['1', '2', '3', '4', '5', '6', '7', '8', '9']
#range(起始,结束,步长),左闭右开
list(range(1,8,2))		#[1, 3, 5, 7]

3、拼接与成倍复制

a = [1, 2]
b = [3, 4]
a + b		#[1, 2, 3, 4]
[0]*10
#[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

4、元素增加

# 末尾增加元素.append(元素)
a.append(8)		#[1, 2, 8]

# 任意位置增加元素.insert(位置,元素)
a.insert(1,4)	#[1, 4, 2, 8]

# 在尾部拼接其他列表.extend(列表名),和前面的“+”一样
a.extend(b)	#[1, 4, 2, 8, 3, 4]

5、元素删除

# .pop(位置)删除指定位置元素,不指定默认为尾元素
a.pop(1)		#[1, 2, 8, 3, 4]
a.pop()			#[1, 2, 8, 3]

#.remove(元素)删除第一次遇到的指定元素
a = [1, 2, 4, 8, 8, 8, 16]
a.remove(8)		#[1, 2, 4, 8, 8, 16]

#可以用while循环删除所有指定元素
while 8 in a:
    a.remove(8)
print(a)		#[1, 2, 4, 16]

6、元素查找

#.index(元素)返回元素位置
languages = ["Python", "C", "C++", "Java"]
idx = languages.index("C")

7、元素赋值

错误方法

languages2 = languages
print(languages2)	#['Python', 'C', 'C++', 'Java']

看似没有问题,但实际这样做只是给这个列表一个别名,地址是共享的,当改变一个时,另一个也会被改变

languages[1] = "PHP"
print(languages2)	#['Python', 'PHP', 'C++', 'Java']

正确的做法是使用.copy()或者切片方式(有区别)

languages = ["Python", "C", "C++", "Java"]
languages2 = languages.copy()
languages3 = languages[:]
languages.pop()
print(languages)
print(languages2)
print(languages3)
#输出
['Python', 'C', 'C++']
['Python', 'C', 'C++', 'Java']
['Python', 'C', 'C++', 'Java']

8、元素排序

#.sort()是永久排序,会改变列表,默认递增
ls = [3, 2, 5, 6, 7, 1]
ls.sort()
print(ls)		#[1, 2, 3, 5, 6, 7]

ls.sort(reverse = True)
print(ls)		#[7, 6, 5, 3, 2, 1]
#.sorted()是临时排序,不会改变列表
ls_2 = sorted(ls)
print(ls)		#[7, 6, 5, 3, 2, 1]
print(ls_2)		#[1, 2, 3, 5, 6, 7]

9、元素翻转

用切片或者.reverse(),前者不改变原列表,后者改变。

二、元组

元组也可以是多种元素,但是一旦定义好就不可变。除此之外其他操作和列表类似。

names = ("Peter", "Pual", "Mary")

1、打包和解包

#函数输出多个元素时,默认为元组格式
def f1(x):
    return x,x**2
print(f1(3))			#(3, 9)
#解包复制
a, b = f1(3)
print(a)
print(b)
#输出
3
9

2、zip()函数

idx = ['20201','20202','20203','20204']
names = ['Zhang','Li','Zhao','Wang']
list(zip(idx,names))		#[('20201', 'Zhang'), ('20202', 'Li'), ('20203', 'Zhao'), ('20204', 'Wang')]
for num, name in zip(idx,names):
    print(num,name)
#输出
20201 Zhang
20202 Li
20203 Zhao
20204 Wang

三、字典

字典的键值必须是不可变的类型,不能是列表、集合、字典等可变的类型,键值不能重复,否则前面的会被覆盖。

1、增加元素

students = {20201: "Zhang", 20202: "Li", 20203: "Zhao"}
students[20204] = "Wang"
#{20201: 'Zhang', 20202: 'Li', 20203: 'Zhao', 20204: 'Wang'}

2、删除元素

#直接用del 变量名[key]  删除
del students[20201]
#{20202: 'Li', 20203: 'Zhao', 20204: 'Wang'}
#使用.pop(key)
values = students.pop(20202)		#删除的同时会返回值
students
#{20203: 'Zhao', 20204: 'Wang'}
#使用.popitem()随机删除一个键值对,并返回元组
students = {20201: "Zhang", 20202: "Li", 20203: "Zhao"}
key, value = students.popitem()
print(key, value)		#20203 Zhao
print(students)			#{20201: 'Zhang', 20202: 'Li'}

3、查找操作

d.get(key, default),从字典d中查找键值key对应的值,如果没有,则返回default

s = "牛奶奶找刘奶奶买榴莲牛奶"
d = {}
for i in s:
    d[i] = d.get(i, 0) + 1
print(d)
#{'牛': 2, '奶': 5, '找': 1, '刘': 1, '买': 1, '榴': 1, '莲': 1}

4、d.keys()和d.values()

#可以用list()把他们变成列表
students = {20201: "Zhang", 20202: "Li", 20203: "Zhao"}
print(students.keys())		#dict_keys([20201, 20202, 20203])
print(students.values())	#dict_values(['Zhang', 'Li', 'Zhao'])

5、.item()方法及遍历

#.item()将字典变为元组
print(list(students.items()))
for k, v in students.items():
    print(k, v)
#输出
[(20201, 'Zhang'), (20202, 'Li'), (20203, 'Zhao')]
20201 Zhang
20202 Li
20203 Zhao

四、集合

集合里的元素不能重复,和dict的键值类似。

1、集合运算

Set_1 = {1,2,3,4,5,6,7,8}
Set_2 = {2,4,6,8,10}
Set_1 & Set_2		#交集,{2, 4, 6, 8}
Set_1 | Set_2		#并集,{1, 2, 3, 4, 5, 6, 7, 8, 10}
Set_1 ^ Set_2		#并集-交集,{1, 3, 5, 7, 10}
Set_1 - Set_2		#Set_1 - 交集,{1, 3, 5, 7}

2、其他操作

.add(值) 增加元素
.remove(值) 删除元素
len(S) 集合长度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值