文章目录
一. 标准数据类型
包括:数字、字符串、元组(不可变数据)以及 集合、字典、列表(可变数据) 。
- 使用
type()查看数据类型,使用isinstance(a, int)判断数据类型。isinstance和type的区别在于:
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))
三. 元组的构建
- 逗号分隔序列值
如:tup = 4,5,6,(7,8) #(4,5,6,(7,8)) - tuple函数创建元组。
- 构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
- 元组不可变,元组存在可变对象是可以改变可变对象的。
+可以增加元组的长度。- 元组的拆包
tup = (4,5,6)
a, b, c = tup #得到b = 5
a, b = b, a #可以直接进行交换
a, *resto or *_ = tup #*resto or *_可以获取剩下的参数
四. 列表
- 创建:
[] or list()。 - 增,删
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
- 连接列表:
+ or extend()。 - 复制列表必须使用切片复制,单纯的复制时行不通的,两个变量指代的是同一个列表。
五. 嵌套推导式
- 列表、集合和字典的推导式
[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}
- 嵌套列表推导式
[ [expr for val in collection for val in collection if condition]
#for表达式的顺序应该与嵌套列表推导式里的for循环顺序一致。先第一个for再第二个for再condtion最后expr
- 列表推导式中的列表推导式
[ [expr for val in collection if condition] for val in collection if condition]
#先后面的for再前面的for
六. 参数
- 包括位置参数和关键字参数。
- 位置参数必须再关键字参数的前面,任意顺序指定关键字参数,也可用关键字参数向位置参数传参。
- python函数可以返回多个值。
- 柯里化:部分参数的应用。
如:
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.youkuaiyun.com/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.youkuaiyun.com/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的数。
本文深入探讨Python中的数据类型,包括字符串、元组、列表等的使用与操作,讲解了参数传递、生成器、迭代器及lambda匿名函数的运用,并介绍了随机数组生成、列表初始化与操作技巧。
455

被折叠的 条评论
为什么被折叠?



