杂记
多行语句
Python语句中一般以新行作为语句的结束符。但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:
total = item_one + \
item_two + \
item_three
print('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\
aaaaaaaaaaaaaaaaaaaa')
语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:
days = [‘Monday’, ‘Tuesday’, ‘Wednesday’,
‘Thursday’, ‘Friday’]
##type()和isinstance()
| type() | |
| isinstance() | 会认为子类是一种父类类型 |
进制
二进制:使用0b开头 例如:0b1010
八进制:使用0o开头 例如:0o555
十六进制:0x开头 例如:0x52A74(大小写都OK)
随机函数
| 函数 | 描述 |
|---|---|
| choice(seq) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 |
| randrange ([start,] stop [,step]) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1 |
| random() | 随机生成下一个实数,它在[0,1)范围内。 |
| seed([x]) | 改变随机数生成器的种子seed。 |
| shuffle(lst) | 将序列的所有元素随机排序 |
| uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内。 |
转义字符打印
Python 使用反斜杠()转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:
print('Ru\noob')
Ru
oob
print(r'Ru\noob')
Ru\noob
字符串不能靠赋值改变
元组并非完全不能改变
不能改变元素名,但是可以改变元素的含义
list = [0,2,1,3]
t = (0,1,2,3,list)
t[0] = 1 # 报错
t[4][0] = 1
print(t[4])
输出[1, 2, 1, 3]
set()
集合set()是由一个。合的事物或对象称作元素或是成员。基本功能是进行成员关系测试和删除重复元素。
会自动删除重复项,set形式会拆解字符串
parame = {value01,value02,...} 或者 set(value)
dict
键(key)必须使用不可变类型。
(1) d = {"a":1,"b":2,"c":3}
(2) d = dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
(3) d = {x:x**2 for x in (2, 4, 6)}
(4) d = dict(Runoob=1, Google=2, Taobao=3)
python类型转换
| 函数 | 描述 |
|---|---|
| int(x [,base]) | 将x转换为一个整数 |
| float(x) | 将x转换到一个浮点数 |
| complex(real [,imag]) | 创建一个复数 |
| str(x) | 将对象 x 转换为字符串 |
| repr(x) | 将对象 x 转换为表达式字符串 |
| eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
| tuple(s) | 将序列 s 转换为一个元组 |
| list(s) | 将序列 s 转换为一个列表 |
| set(s) | 转换为可变集合 |
| dict(d) | 创建一个字典,d 必须是一个序列 (key,value)元组。 |
| frozenset(s) | 转换为不可变集合 |
| chr(x) | 将一个整数转换为一个字符(ASCII码) |
| ord(x) | 将一个字符转换为它的ASCII码值 |
| hex(x) | 将一个整数转换为一个十六进制字符串 |
| oct(x) | 将一个整数转换为一个八进制字符串 |
Linux相关操作
python直接运行
在Linux/Unix系统中,你可以在脚本顶部添加以下命令让Python脚本可以像SHELL脚本一样可直接执行:
#! /usr/bin/env python3
然后修改脚本权限,使其有执行权限,命令如下:
$ chmod +x hello.py
Python运算符优先级
| 运算符 | 描述 |
|---|---|
| ** | 指数 (最高优先级) |
| ~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
| * / % // | 乘,除,取模和取整除 |
| + - | 加法减法 |
| >> << | 右移,左移运算符 |
| & | 位 ‘AND’ |
| ^ | 位运算符 |
| <= < > >= | 比较运算符 |
| <> == != | 等于运算符 |
| = %= /= //= -= += *= **= | 赋值运算符 |
| is is not | 身份运算符 |
| in not in | 成员运算符 |
| and or not | 逻辑运算符 |
字符串
字符串创建换行要用""" “”"
s = """
abcdefg
"""
Python字符串格式化
| 符号 | 描述 |
|---|---|
| %c | 格式化字符及其ASCII码 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %u | 格式化无符号整型 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字,可指定小数点后的精度 |
| %e | 用科学计数法格式化浮点数 |
| %E | 作用同%e,用科学计数法格式化浮点数 |
| %g | %f和%e的简写 |
| %G | %f 和 %E 的简写 |
| %p | 用十六进制数格式化变量的地址 |
内建函数
| 方法 | 描述 |
|---|---|
| capitalize() | 将字符串的第一个字符转换为大写 |
| endswith(suffix,beg=0,end=len(string)) | 检查字符串是否以 obj 结束 |
| expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
| find(str, beg=0 end=len(string)) | 检测 str 是否包含在字符串中,如果包含返回开始的索引值,否则返回-1 |
| index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常. |
| isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
| isdigit() | 如果字符串只包含数字则返回 True 否则返回 False… |
| isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
| isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False. |
| join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
| len(string) | 返回字符串长度 |
| lower() | 转换字符串中所有大写字符为小写. |
| lstrip() | 截掉字符串左边的空格或指定字符。 |
| max(str) | 返回字符串 str 中最大的字母。 |
| min(str) | 返回字符串 str 中最小的字母。 |
| replace(old, new [, max]) | 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
| rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找. |
| rindex( str, beg=0, end=len(string)) | 类似于 index(),不过是从右边开始. |
| rstrip() | 删除字符串字符串末尾的空格 |
| split(str="",num=string.count(str)) | num=string.count(str))以str为分隔符截取字符串,如果num有指定值,则仅截取 num个子字符串 |
| splitlines([keepends]) | 按照行(’\r’, ‘\r\n’, \n’)分隔 |
| startswith(str,beg=0,end=len(string)) | 检查字符串是否是以 obj 开头 |
| strip([chars]) | 在字符串上执行 lstrip()和 rstrip() |
| upper() | 转换字符串中的小写字母为大写 |
迭代器
iter()
next()
遍历的方法
list=[1,2,3,4]
it = iter(list)
(1) for循环
这里其实直接用 i in list 也可 iter()在这里没有意义
for i in it:
print(i)
(2) while循环
import sys
while True:
try:
print(next(its))
except StopIteration:
sys.exit()
转换方法
字符串数字转换
int('1')
order('1')-49
切割纯数字str
a='123456'
b=list(a)
字符串不能用位置改变
str = 'abcdef'
str[0] = 's' # 报错
迭代器、生成器再看看
LEGB变量作用域
元组设定可以不要括号
tup3 = "a", "b", "c", "d"
浅复制
1、对于不可变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。
2、对于可变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间,里层的元素地址还是一样的),进行浅拷贝
3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。
创建一个迭代器
把一个类作为一个迭代器使用需要在类中实现两个方法 iter() 与 next() 。
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a < 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
for x in myiter:
print(x)
生成器
python 注释
python注释在使用时
#可以不注意格式
‘’'需要注意对齐
关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

注:当没有关键字参数时默认是一个空字典{}。
关键字参数有什么用?它可以扩展函数的功能。就像上面所说的,他真正实现了“不依赖于参数数量与参数位置”,可以任意添加参数。
动态参数
python中,在形参前面加上“*”与“”“**”,称为动态参数
加“*”时,函数可接受任意多个参数,全部放入一个元祖中
def F(*args):
print(args)
F(123,"456")
# (123, '456')
加“**”时,函数接受参数时,返回为字典,需要写为如下形式:
def F(**kwargs):
print(kwargs)
F(k1=123,k2="456")
# {'k1': 123, 'k2': '456'}
def F(p,*args,**kwargs):
print(p)
print(args)
print(kwargs)
F(11,"abc",[789],k1=123,k2="456")
# 11
# ('abc', [789])
# {'k1': 123, 'k2': '456'}
map()
map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
本质上其实还是形成了一个函数所以无法用print()打印,需要循环才能调用
def f(x,a):
return x+x,a+a
r = map(f,[1,2,3,4],[2,3,4,5])
for i in r:
print(i)
#打印
[(2, 4)]
[(4, 6)]
[(6, 8)]
[(8, 10)]
reduce()
reduce把一个函数作用在一个序列 [x1, x2, x3, …] 上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
## 计算流像是这个样子
f(x1, x2)
f(f(x1, x2), x3)
f(f(f(x1, x2), x3), x4)
数组
获得二维数组维度参数
row,colums = len(grid),len(grid[0])
本文详细介绍了Python中的进制转换,包括二进制、八进制和十六进制的表示。此外,还探讨了随机函数的使用,如random.choice和random.uniform等。字符串方面,讲解了转义字符、不可变性以及格式化方法。文章还涉及了元组、集合、字典等数据结构的操作,以及类型转换、迭代器和生成器的概念。同时,提到了Python在Linux系统中的执行方式和运算符优先级。最后,讨论了关键字参数、动态参数和map、reduce函数的应用。

244

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



