记录向python学习—琐碎知识点持续更新

一. 标准数据类型

包括:数字、字符串、元组(不可变数据)以及 集合、字典、列表(可变数据) 。

  • 使用type()查看数据类型,使用isinstance(a, int) 判断数据类型。 isinstancetype 的区别在于:
    type()不会认为子类是一种父类类型。 isinstance()会认为子类是一种父类类型。
  • is是判断两个标识符是不是引用自一个对象。 如: x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回True,否则返回 False。

is== 区别:is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

二. 字符串

  • 使用单引号,双引号完全相同。

  • 多行 ''' """ 自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

  • \表示转义。

  • 使用r可以让语句中的转义取消。

  • +表示连接, *表示重复。

  • 按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。

  • Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。

  • Python中的字符串不能改变。

  • Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。

  • 字符串的截取的语法格式如下:变量[头下标:尾下标:步长],左闭右开。
    如: print(str[2:5]) # 输出从第三个开始到第五个的字符;print(str[0:-1])# 输出第一个到倒数第二个的所有字符

  • Python字符串格式化% 等于格式化字符串的函数 str.format(),在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
    如: print("我叫 %s 今年 %d 岁!" % ('小明', 10))
    =print("我叫{}今年{}岁!".format('小明', 10))

三. 元组的构建

  1. 逗号分隔序列值
    如:tup = 4,5,6,(7,8) #(4,5,6,(7,8))
  2. tuple函数创建元组。
  3. 构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号 
  1. 元组不可变,元组存在可变对象是可以改变可变对象的。
  2. +可以增加元组的长度
  3. 元组的拆包
tup =456)
a, b, c = tup #得到b = 5
a, b = b, a #可以直接进行交换
a, *resto or *_ = tup #*resto or *_可以获取剩下的参数

四. 列表

  1. 创建:[] or list()
  2. 增,删
append() #末尾插入
insert(pos,value)	#特定位置插入
pop() # 末尾删除
pop(0)	# 索引删除
remove(value) 	# 按值删除,只删除第一个
del num[0]	# 删除num的第一个元素,del还可以用于删除字典中的键值对
num.sort()	# 永久修改,sort(reverse=True) 反序
sorted(num)	# 临时排序
num.reverse()	# 永久逆置
len()
list(range(2,8,2))	# 2到8的每次+2的数字列表
min()
max()
sum()
2 in num	# 检查特定值是否不在列表可以用 not in
  1. 连接列表:+ or extend()
  2. 复制列表必须使用切片复制,单纯的复制时行不通的,两个变量指代的是同一个列表。

五. 嵌套推导式

  1. 列表、集合和字典的推导式
[expr for val in collection if condition] # 先for再condition最后expr
{key-expr:value-expr for val in collection if condition} 
{expr for val in collection if condition} 
  1. 嵌套列表推导式
 [ [expr for val in collection for val in collection if condition]
  #for表达式的顺序应该与嵌套列表推导式里的for循环顺序一致。先第一个for再第二个for再condtion最后expr
  1. 列表推导式中的列表推导式
 [ [expr for val in collection if condition] for val in collection if condition]
 #先后面的for再前面的for

六. 参数

  1. 包括位置参数和关键字参数。
  2. 位置参数必须再关键字参数的前面,任意顺序指定关键字参数,也可用关键字参数向位置参数传参。
  3. python函数可以返回多个值。
  4. 柯里化:部分参数的应用。
    如:
add_five = lambda y:add_numbers(5, y) #只使用add_nnumbers()中的y 

七. 生成器和迭代器

  • 迭代器协议:一种令对象可遍历的通用方法
  • 迭代器:一种用于上下文中(for循环)向python解释器生成对象的对象
  • 生成器:包含了yield关键字的函数,它也是一种迭代器,只是它可以返回一个多结果的序列(有多个元素,都会返回出来),每一个元素产生之后会暂停
  • 生成器表达式与推导式类似,只是中括号替换为小括号,它可以作为函数的参数。

八. lambda 匿名函数

e=lambda x: x*2 # 变量乘二函数

九. 随机生成二维数组

随机生成(x,y),使用的是tuple,可以换成list

random_points = [(random.randint(1, 100), np.random.randint(1, 100)) for _ in range(100)]  # 随机生成100个点

为什么用tuple而不用list呢?
是因为如果想要用set()去除重复的(x,y)需要传入的参数是可以哈希的,tuple可以但是list不可以。

参考:https://blog.csdn.net/pyufftj/article/details/72366631

如果需要list呢?
那就转换呗,需要注意的是如果想最终转换为numpy.ndarray类型,建议先list()再变成np.array()。因为这样输出来的好看些。

points = set(random_points)  # 去除重复的点
point = np.array(points)
# point = np.array(list(points))

在这里插入图片描述
在这里插入图片描述

类型转换参考:https://blog.csdn.net/qq_17753903/article/details/82185012

十. 以某个固定值初始化列表

sample_list = [initial_value]*list_length

十一. 找到列表最大值并且替换

 if distance < max(arr):
 	arr[arr.index(max(arr))] = distance

十二. 二维数组转为一位数组

arr4.flatten()

其他

  • try/expect/else/finally:else,try成功之后执行,finally,无论报不报错都要执行
  • Sys.argv[ ]
    其实就是一个列表,里边的项为用户输入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,要想看到它的效果就应该将程序保存了,从外部来运行程序并给出参数。

详细说明:https://www.cnblogs.com/aland-1415/p/6613449.html

  • 使用with打开文件再with结束以后就会自动关闭文件
    with通过__enter__方法初始化,然后在__exit__中做善后以及处理异常。
    紧跟with后面的语句会被求值,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as关键字后面的变量,当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。

详细说明:https://www.cnblogs.com/xiaxiaoxu/p/9747551.html

enumerate(),返回(索引,值);
zip(),将列表、元组或者其他序列的元素配对,新建一个元组构成的列表;
zip(*pitchers),把给定的配对拆分;
reversed(), 倒叙,是个生成器;
sort() 的参数key,可以表示用什么来当作排序的依据;
hash(),用于检测一个对象是否可以成为字典的键;
map(函数,序列)后面的序列按照前面的函数来执行;
strip(),移除字符串开头or结尾的字符,默认为空格or换行符或者字符序列中的字符;
  • 文件字节数读和二进制模式读字数是不一样的,f.tell()告诉句柄的位置其实是以1开始数的,f.seek(3)改变位置到3其实到了4的位置上,之后直接读出4的数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值