Python学习笔记
文章目录
学习网站:
廖雪峰的官网Python3教程.
断断续续学习python有一段时间了,想要把自己碎片化的学习整理出来,思维导图的内容主要来自于廖雪峰老师的教程,不涉及到具体的细节,只是方便自己复习。
Python基础
- Python基础部分主要是基本的数据类型、编码、分支和循环等流程控制语句。
- 注意事项:
- Python程序是大小写敏感的
- Python强制用缩进的形式写代码
数据类型
简单数据类型
-
整数(int)
-
浮点数(float)
-
字符串(str/string)
python中字符串操作内容较多,具体参考下文:
python中字符串操作 -
布尔值(bool)
- 布尔值可以进行+ 、-、*、/ 运算
-
空值(None)
-
查看变量类型
type()函数, 例如:a=1; type(a)
isinstance(100, int) 判断是否为某一数据类型
-
类型转换
a = “12”, int(a), float(a) , str(a)
运算
- +、-、*、/、**、//(地板除)、%(取余)
- 运算符的优先级:幂运算 > 正负号 > 算术运算符 > 比较运算符 > 逻辑运算符
练习
- print(“hello world”) 打印出的是字符串
- print(5+3) 打印出的是运算结果
- print(“hello” + " world") 打印出字符串的拼接
- print("hello world " * 8) 打印8个hello world print(“hello world\n” * 8) 打印并换行
表达式
- python会用表达式去计算和返回一个结果
- 与(and)、或(or)、非 (not)
复杂数据类型
-
列表(list)
-
dir(list) 查看列表的内置函数
-
创建列表:number = [1,2,3,4,5]
-
创建空列表:empty = []
-
len(number) 查看列表中元素的数量
-
number.append(6) 向列表中添加元素
-
number.extend([9,8]) 向列表中同时添加多个元素
-
number.insert(1, 0) 在指定的位置添加元素,顺序索引是从0开始的
-
number[0] 从列表中取第一个数据,从列表中获取元素:通过元素的索引值从列表中获取元素,列表的索引从0开始。
-
list切片
# 分片不会改变原列表 list1 = [1, 2, 3, 4, 5, 6, 4, 5, 6, 7, 8] list1[0:6:2] # 索引下标从0到6,步长为2 list1[:3] # 从0开始可以不用写 list1[2:] # 到末尾则最后一个不用写 list1[:] # 会得到列表的拷贝 list1[::2] # 取所有,步长为2 list1[3:-1] # 从索引3取到倒数第一个(倒数第一个取不到) list1[::-2] # 逆着取,步长为2 list1[8:2:-2] # 逆着取 list1[-2] # 索引下标也可以为负数 list1[4:5] = ['a','b'] # 替换
-
list的值list1.count(6) # 统计某一个元素在列表中出现的次数
# 统计列表中每个元素出现的次数 for i in set(list1) : print(i, list1.count(i))
-
list1.pop() 删除列表中的值
-
list1.pop(2) # 删除指定索引位置的元素
-
list1.remove(‘a’) # 删除指定的元素
-
list1.reverse() # 对列表进行反转
-
del(list1[1]) # 删除列表中的元素
-
list1.sort(reverse = True) # 倒序排列
-
list1.sort(reverse = False) # 正序排列
-
list3.index(123) # 查看元素在列表中的位置
-
list3.index(123, 2, 6) # 从指定的位置查询
-
list7 = list6[:]和list8 = list6 这两种方式是不同的
-
拼接成字符串:"-".join(list1)
-
max(list1) #最大值
-
min(list1) #最小值
-
del(list1) # 删除列表
-
生成列表
# 生成元素是1-10的列表 list1 = [] for i in range(1,11) : list1.append(i) print(list1) # 列表推导式 [i for i in range(1,11)] # 一行代码 [i+1 for i in range(1,11)] # 表达式 [i**2 for i in range(1,11)] [i for i in range(1,11) if i%2 == 1] #只取奇数 [i for i in range(1,11) if (i%2 == 1 and i<7)] #只取奇数 names = ["a","b","c","d"] ["我的名字是:"+name for name in names] #表示最后返回的结果是列表
-
列表的拷贝
import copy list1 = [1,2,3,4,5,6] list2 = copy.deepcopy(list1) # 两个是不同的列表 id(list1) id(list2)
-
比较操作符
list1 = [1,2,3] list2 = [2,3,4] list1 > list2 # 先比较第一个元素,若有结果则不会再判断了
-
逻辑操作符
list3 = [123, 456] (list1 < list2) and (list1 == list3)
-
连接操作符
list4 = list1 + list2 # 两个列表拼接的结果并没有赋值给任何一个列表 list1 + "这是一个字符串" # 报错,添加元素到列表不能直接用+号
-
重复操作
list3 *= 3
-
成员关系操作
123 in list3 'wowo' not in list3 list5 = [123, [456,789],234] 456 in list5 456 in list5[1] list5[1][1] # 列表取值
-
数值交换
# 数值交换 a,b = b,a list2 = ['a','b','c','d'] list2[0],list2[1] = list2[1],list2[0]
-
高级排序 sort()和sorted()
my_list =[5,1,3,7,6] my_list.sort() # 会改变原列表 my_list my_list2 =[5,1,3,7,6] sorted(my_list2) #不会改变原列表,作为一个返回值返回 my_list2 # sorted还可以对字符串排序 str1 = ['a','b','c'] sorted(str1) # 字典序,从小到大排序 sorted(str1, reverse=True) # 字典序,从大到小排序 str2 = ['aaa','bb','c','dddd'] sorted(str2, key=len) #不按照字典序进行排序了,用key指定的函数排序 str3 = ['aaa','C','BB','dddd'] sorted(str3, key=str.lower) # 先转小写后再排序 # key是排序的依据:用key后面的函数对原始的list元素处理完之后,作为排序的依据
-
-
元组(tuple)
tuple1 = (1,2,3,4,5,6,7)
-
tuple1[1] # 通过下标取值
-
tuple1[2:5] # 元组切片,参数list
-
元组创建后不能被修改,tuple2[1] = 3会报错
-
temp = (1) # 注意这样创建的不是元组,是一个int值 type(temp)
-
temp = (1,) # 确保创建的是元组 同 temp = 1,
-
temp2 = 2,3,4 # 不加括号也是元组
-
temp = () #创建一个空元组
-
元组可通过+号添加元素
temp = ('a','b','c','d','e','f') temp = temp[:2] + ('wowo',) +temp[2:] # temp只是一个标签
-
del temp 删除元组
-
-
字典(dict)
-
key/value 键值对
prices = {"apple":8, "banana":3,"orange":6} type(prices) # 查看参数类型 prices["apple"] # 根据key取value prices["pig"] # 不存在的key会报错 prices.keys() # 取出所有的key prices.values() # 取出所有的值 "pig" in prices # 返回False for fruit,price in prices.items(): # 遍历 print(fruit,price) # 字典推导式 data_list = [1,2,3,4,5,6] # 普通遍历 dic = {} for num in data_list: dic[num] = num**2 # 推导式(效率高些) {num:num*2 for num in data_list}
-
-
集合(set)
- set(names) 去除重复元素,会按照字母顺序排序
序列
列表、元组、字符串都是序列,特点:
tuple1 = (1,2,34,56,7,89)
-
可以通过索引得到每个元素
-
默认索引值总是从0开始
-
可以通过分片的方法得到一个范围内的元素的集合
-
有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)
-
list() 把一个可迭代对象转换为列表
-
tuple() 把一个可迭代的对象转换为元组
-
str(obj) 把obj对象转换为字符串
-
使用max(tuple1 )或者min时要求序列的类型是统一的
-
sum(tuple1 ) 、sum(tuple1 , 1) 必须要是数值
-
sorted(tuple1) # 排序
-
reversed(tuple1) # 翻转 返回的是迭代器对象
-
list(reversed(tuple1))
-
enumerate(tuple1) # 枚举
-
list(enumerate(tuple1)) # 索引值变成元组
-
打包
a = [1,2,3,4,5,6,7,8] b = [4,5,6,7,8,9] zip(a,b) list(zip(a,b)) # 成对打包
流程控制语句
循环结构
for循环
test = "abcdfed"
for i in test:
print(i, end= ' ') # end用于分割
names = ['a','b','c','d']
for index,name in enumerate(names):
print("名字"+name+","+"编号是"+str(index))
range()函数用于生成一个列表:list(range(5)),range()函数不包含结尾的数
for i in range(5):
print(i)
for i in range(2,5):
print(i)
range函数设置步长:
for i in range(1,9,2):
print(i)
while循环
i = 0
while i<10:
print("开始报数啦"+ str(i))
i += 1
i = 0
while True:
i +=1
if i%3 == 0:
continue
print(i)
if i > 8:
break
分支结构
if…elif…else
x,y = 4,5
if x < y :
small = x
else :
small = y
age = 50
if age <= 30 :
print("年轻”)
elif age <= 50:
print("依旧年轻")
else :
print("心态年轻")
条件表达式(三元操作符)
small = x if x< y else y
断言(assert)
assert 3 > 4 断言一般用来在程序中设置检查点