Python第二章学习笔记
1.数据类型
1.int(整型)
如a = 2
2.float(浮点型)
如a = 2.5
3.bool(布尔型)
如a = True
4.complex(复数)
如a = 4+5j
5.None(空值) #不能理解成0
赋值方法:a,b,c,d=2,2.5,True,4+5j #交互赋值
强制类型转换:int/float/complex/str/tuple/chr/list(a)
2.Random随机数
import random #调用模块
1.print(random.random) #返回0~1之间一个随机数
2.print(random.randrange(1,100,10)) #返回1~100之间间隔10的一个随机数,如11,21
3.d=range(1,10,2) #创建数字列表
for i in d:
print(i,end='')
输出:13579
4.print(random.randint(0,10)) #返回0~10之间一个随机整数
5.返回随机的一个元素 做随机抽奖
li = ['一块手表','一部苹果手机','10000元人民币','摩托车']
print(random.choice(li))
6.sample 随机获取部分元素
生成6位数的随机验证码:
str = '0123456789abcdefghijklmnopqrstuvwxyz'
res = random.sample(str,6)
for r in res:
print(r,end='')
输出:2kt8f4
3.字符串
基础
格式:
s = 'abc'
或
s = "abc"
输出:
print('%s'%s) #输出abc
print('abc') #输出abc
a = input('输入s:')
print(type(a)) #输出<class 'str'>
下标:变量名[下标] #范围0~最后
print(s[0]) #输出a
for i in s:
print(i,end='') #输出abc
切片:截取变量里面的部分元素值
格式:[开始:结束:步长]
print(s[0:2:]) #输出ab
print(s[0:2:2]) #输出a
print(s[:-1:]) #输出ab(从后往前切,最后一个元素下标-1)
运算:
s1 = 'abc'
s2 = 'efg'
print(s1+s2) #输出abcefg
print(s1*2) #输出abcabc
注意:字符串里元素不能通过下标赋值修改
s1[0] = 'y'
print(s1)
一些字符串常见操作
有一个字符串
s = 'My name is ckc'
- find
检测na是否包含在myStr中,如果是返回开始元素的索引值,否则返回-1
print(s.find('na',0,8)) #输出3
print(s.find('ag',0,8)) #输出-1
- index
和find方法一样,如果字符串不在myStr中,或直接报错
- count
返回c在start和end直接在myStr中出现的次数
print(s.count('c',0,20)) #输出2
- replace
把s中s1(旧元素)替换为s2(新元素),如果指定了count,则替换不超过count次
s1 = 'name'
s2 = 'familie name'
print(s.replace(s1,s2)) #输出 My familie name is ckc
- rfind
在字符串中查找指定子串的最后一次出现的位置。如果没有找到,就返回-1
print(s.rfind('c')) #输出13
- rindex
与rfind一样,只不过如果没有找到就直接报错
4.列表
列表名 = [列表选项1,列表选项2,....,列表选项n]
如:namelist = ['ckc',50,False,7.8,3+4j,None]
特点:列表中存储的元素是可以不同类型的
支持下标操作
print(namelist[0]) #输出ckc
循环遍历列表
for i in namelist:
print (i)
或者
length = len(namelist)
i = 0
while i<length:
print(namelist[i])
i+=1
常见操作
- 基础
num = [0,10,20,50,60]
修改元素
num[0] = 5
print(num) #[5, 10, 20, 50, 60]
组合
num1 = [30,40]
print(num+num1) #[0, 10, 20, 50, 60, 30, 40]
重复
print(num*2) #[0, 10, 20, 50, 60, 0, 10, 20, 50, 60]
in判断元素是否在列表中,如果找到返回True,反之False
if 0 in num:
print(True)
else:
print(False) #True
截取(包左不包右)
print(num[0:3]) #[0, 10, 20]
- 函数(添加元素:append,extend)
len() 求列表元素个数
num = ['逻辑','值']
print(len(num)) #2
max() 获取列表元素最大值
liste = [100,99,2,9999]
print(max(liste)) #9999
min()最小值
print(min(liste)) #2
append:添加元素(整体)
num = ['逻辑','值']
num.append('逻辑值')
print(num) #['逻辑', '值', '逻辑值']
extend:添加元素(个体)
a = [1,2]
b = [3,4]
a.extend(b)
print(a) #[1, 2, 3, 4]
extend和append区别
1.append()方法将一个元素作为整体添加到列表的末尾,而extend()方法将一个可迭代对象的每个元素分别添加到列表的末尾。
2.append()方法会增加列表的长度1,而extend()方法会增加列表的长度等于可迭代对象的长度。
- 查找元素
python中查找的常见的方法
in(存在):如果存在返回的结果为True,反之False
not in(不存在):如果不存在结果为True,反之False
num = [0,1,2,3,4,5]
NUM=int(input('输入一个数字'))
if NUM in num:
print('exist')
else:
print('Not find')
index返回索引
print(num.index(2)) #2
count返回出现次数
print(num.count(1)) #1
- 删除元素(del/pop/remove)
del:根据下标进行删除
pop:删除最后一个元素
remove:根据元素的值进行删除
name = ['c','k','c']
del name[0] #['k', 'c']
name.pop() #['c', 'k']
name.remove('k') #['c', 'c']
- 排序(sort/reverse)
sort将列表按照特定的顺序重新的排列,默认由小到大
li = [9,100,78,0,111,-3]
li.sort() #[-3, 0, 9, 78, 100, 111]
reverse()将列表li中的元素按照相反的顺序排列
li.reverse() #[-3, 111, 0, 78, 100, 9]
#注意是列表中逆序,不是从大到小
5.元组
python的元祖和列表类似,不同之处在于元祖的元素不能修改,比如身份证号
格式:
元祖名 = (元祖元素1,元祖元素2.....元祖元素n)
本质:
一个有序的集合
- 常见操作
创建空元组
a = ()
print(a)
print(type(a)) #() <class 'tuple'>
定义元祖的时候只定义一个元素
b = (1,)
print(b) #(1,)
删除元组
c = (1,2,3)
del c
print(c) #错误,因为c已经不存在了。错误信息是:NameError: name ‘c’ is not defined
元组组合
d = (4,5,6)
print(c+d) #(1, 2, 3, 4, 5, 6)
元祖的截取(与列表一样包左不包右)
print(d[0:2]) #(4, 5)
元祖的嵌套(二维元祖),元素是一维元祖 #有点像C里的二维数组
e = ((1,3,5),(2,4,6))
print(e[0][2])
for temp in e:
for t in temp:
print(t,end='')
'''
5
135246
'''
len,max/min,count/index用法与列表相同
6.字典
格式:
{key:value,key:value....}
定义一个变量info为字典类型
info = {"name":"周杰伦","age":30,"address":"北京"}
说明:
字典和列表一样,存储多种类型的数据
列表中找某一个元素,根据下标找,默认下标从0开始
字典中找元素,根据名字(就是:前面的那个值--》key)
字典:
字典中的每一个元素分为两个部分,前面是键 后面是值
例如:
key ---------> name
value ---------> 周杰伦
- 根据键找值
ich = {'name':'ckc','age':21,'adress':'Jiangsu'}
print(ich) #获取所有元素:{'name': 'ckc', 'age': 21, 'adress': 'Jiangsu'}
获取单个元素---语法格式:字典变量名[键的名字]
print(ich['name']) #ckc
print(ich['age']) #21
- get函数
在我们不确定字典中是否存在某一个键而又想获取它的值,可以使用get(),可以设置默认值
print(ich.get('no')) #None
print(ich.get('no','100')) #100
- 修改元素
格式:变量名[修改键名] = 新的值
ich['age'] = 25
print(ich['age']) #25
- 添加元素
格式:变量名[“键”] = 数据时,如果该键在字典中不存在,会自动创建
ich['sex']='male'
print(ich['sex']) #male
- 删除元素
del :删除指定的元素
clear():清空字典
del ich['age']
print(ich) #{'name': 'ckc', 'adress': 'Jiangsu', 'sex': 'male'}
ich.clear
print(ich) #{}
del ich #删除字典所有元素 相当于内存里面删除
- 字典中常用函数
len():测量字典中,键值对的个数
len(ich)
keys():返回一个包含字典中所有key的列表
ich.keys() #dict_keys(['name', 'age', 'adress'])
values():返回一个包含字典中所有值value的列表
ich.values() #dict_values(['ckc', 21, 'Jiangsu'])
items():返回一个包含所有(键 值)元祖的列表
ich.items() #dict_items([('name', 'ckc'), ('age', 21), ('adress', 'Jiangsu')])
- 遍历
1.遍历所有键/值
a = ich.keys/values()
for i in a:
print(a)
2.获取字典中键值对
b = ich.items()
for key,value in b:
print(key,value)
'''
name ckc
age 21
adress Jiangsu
'''
- 字典和列表优缺点
字典和列表比较:
1.查找和插入的速度较快,不会随着key-value的增加而变慢
2.需要占用较大的内存
列表占用空间小
7.集合
集合与之前的列表和元祖类似,可以存储多种类型数据,这些数据不能重复
格式:
a = {value1,value2…}
或者
b = set(value,value2…)
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
理解:
只有value,没有key
本质:
无序,不重复元素的集合
集合支持intersection(交集),union(并集),difference(差集)和sysmmetric difference(对称差集)等运算
集合的创建 ,需要列表/元祖/字典作为集合的元素
注意:重复的元素在集合中会被自动过滤掉
- set函数创立
a = set([1.2]) #列表
b = set({'name':'ckc','age':21}) #字典
c = set((3,4)) #元组
print(type(b)) #<class 'set'>
- {}创建
a = {'apple','orange','banana'}
print(a)
添加add
a = {1,2,3}
a.add(5)
print(a) #{1, 2, 3, 5}
a.add((5,6))
print(a) #{1, 2, 3, 5, (5, 6)}
a.add([4,5]) #列表元素可修改,不能添加
a.add({5:‘hello’,6:‘world’}) #字典元素可修改,不能添加
update()可以插入list/tuple/String打碎插入(无序,去重)
a.update([7,8])
print(a) #{1, 2, 3, 5, 6, 7, 8, (5, 6)}
a.update({'name':'ckc','age':21})
print(a) #{1, 2, 3, 'age', 5, 6, 7, 8, 'name', (5, 6)}
a.update('0')
print(a) #{1, 2, 3, 'age', 5, 6, 7, 8, 'name', (5, 6), '0'}
删除
a.clear()
print(a) #set()
遍历
for i in a:
print(i,end='')
交集/差集/并集 开发场景:好友之间的共同爱好
交集 &
s = set([1,2,3,4])
s2 = set([3,4,5,6])
print(s & s2) #{3, 4}
print(s.intersection(s2)) #{3,4}
并集 |
print(s | s2) #{1, 2, 3, 4, 5, 6}
print(s.union(s2)) #{1, 2, 3, 4, 5, 6}
差集 -
print(s - s2) #{1,2}
print(s.difference(s2)) #{1,2}
差集 对称差集
print(s.symmetric_difference(s2)) #{1, 2, 5, 6}