迭代
使用for 遍历整个,称为迭代
判断是否能迭代,看返回结果
from collections import Iterable
isinstance(X Iterable)
lsit
删除指定使用的函数时pop(i),i为0 的时候删除的末尾,其余为索引位置
使用list.sort()
排列
增
使用insert(位置,元素)
插入到指定位置
使用str.split()
可以直接创建列表
list+list生成的还是list
extend()
直接在末尾添加元素,若是str将会分解,变成单字符作为元素,要是为整体的话需要参数为列表的形式
list.reverse()
颠倒顺序重新排列
删
del list[2] 是按照索引删除
remove()删除,参数是元素
pop()
方法进行索引删除
判断
是否在列表中: ‘a’ in list ‘a’ not in list
查看索引位置
list.index(‘a’) 第一次出现的 位置,默认为整个list
list.index(‘a’,0,3) 返回在切片中第一次出现的位置
元组
元组是初始化之后不能进行更改的,在元组元素只有一个的时候,初始化应
t = (1,)
加上逗号表明是元组,否则认为小括号是数学公式的小括号,使用,
消除歧义
元组中的元素为其他类型的时候是可变的,比如底二个元素是list,list中的元素是可以变的
set
set是一组key值集合,不存储value的值,由于key不能重复,所以没有重复的key
set([X]),其中[X]是一个list
初始化使用的 是
s = set([1,2,3])
add(set专有),remove,以及逻辑运算
函数
str.format()的使用
该函数不再使用%
进行替换而是使用的{}
若是多个参数的时候可以在{}
中使用序号指定使用哪个参数
也可以给参数命名赋值,然后使用变量名指定使用哪个参数
在数字需要指定精度和类型的时候需要使用的是:
比如{:.2f}
replace()方法 替换
str.replace(old,new[,max])#替换,max表示的是替换不能超过多少次
sort()排序
只能使用在list中的排序,list.sort(),在原来的list上进行改变
sorted()排序
N= sorted(X),所有可迭代类型都能使用,可以进行比较和调整排序,不改变原来
hash()哈希函数
hash(X)#返回对象的哈希值
count() 统计字符串中初选的次数
str.count(),能设置开始位置和结束位置
切片
切片是用:
进行区间选择
生成器
generator称为生成器,用于列表元素若可推算,在循环过程中不断生成新的元素,节省空间,这是种一边计算一遍循环的机制
初始化只需要将列表生成器l = [x for i in range(5)]
,最外边改为()
即可
打印元素只需要调用next(X)
函数即可,同时它也属于可迭代对象
定义的另外一种方法就是若一个函数定义中包含关键字yield
,则变成一个生成器
与函数流程不同的是。generator函数每次调用next()函数时执行,遇见yield
语句返回,再次执行时从上次返回的yield
语句处继续执行
直接赋值,浅拷贝,深拷贝
直接赋值是对象的引用,也可以看作是是别明
浅拷贝是拷贝父对象,不会拷贝对象的内部子对象
深拷贝是copy模块下的deepcopy方法,完全拷贝了父对象以及子对象
直接赋值:两个变量指向的是同一内存
浅拷贝:父类元素进行复制,但是若元素是一个子对象,其中一个元素是list,子对象指向的是同一内存
深拷贝:完全独立,拷贝了父对象以及子对象
#浅拷贝
a = [1,[2,3]]
b = a.copy()
a[1].append(5)
a = [1, [2, 3, 5]]
b = [1, [2, 3, 5]]
#深拷贝
a = [1, [2, 3, 5]]
import copy
c = copy.deepcopy(a)
a[1].append(4)
a = [1, [2, 3, 5, 4]]
c = [1, [2, 3, 5]]
虚拟环环境
python3 使用了venv
进行创建
python3 -m venv venvname
激活使用
source ~/venvname/bin/activate
#或者
source activate name
退出使用
deactivate
conda deactivate#conda环境下使用
zip内置函数
list = zip(a,b,c)#参数任意个
a,b,c是三个可迭代参数,a=[1,2,3]b=[4,5,6]c=[7,8,9]
zip将参数索引相同的部分组合成一个元组,然后整体输出一个列表
输出的结果是:
[(1,4,7),(2,5,8),(3,6,9)]
format输出字符格式化
{}中参数分别是{0:2f}
第一个是表示索引,之后的格式需要加上:
,输出位数需要.n
表示n位,最后f
表示输出浮点数
多行注释
单行注释直接加#
就可以,但是多行注释使用'''
,"""
也需要按照正常缩进位置放置符号,否则会报错
isinstance函数
内置函数,判断一个对象是否为已知类型,与type
作用类似,区别在于type
认为子类不属于父类的一种
# object实例 classinfo 可以是直接或间接类名、基本类型或者由它们组成的元组
isinstance(object, classinfo)