我还能学之python杂记

本文详细介绍了Python中的进制转换,包括二进制、八进制和十六进制的表示。此外,还探讨了随机函数的使用,如random.choice和random.uniform等。字符串方面,讲解了转义字符、不可变性以及格式化方法。文章还涉及了元组、集合、字典等数据结构的操作,以及类型转换、迭代器和生成器的概念。同时,提到了Python在Linux系统中的执行方式和运算符优先级。最后,讨论了关键字参数、动态参数和map、reduce函数的应用。

多行语句

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])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值