python学习

一、字符串:=======================================================
字符串是不可变的
字符串也可以用索引获得元素 fruit="banana" letter=fruit[1]
但字符串是不可变对象 不能改变已经存在的字符
最好用切片重构一个字符串
str.find(char,[,startIndex])用于寻找子串
str.startswith(sub) 返回布尔值
string.title(); 将字符串首字母全部大写
x+y 连接两个字符串x和y 
n*x复制n次字符串x
x in s 如果 x是s的子串,返回True
string[M:N:K] K为步长
string[::-1]将字符串逆序
oct()八进制 0o
hex()十六进制 0x
len(x) 所有字符长度都是1 包括中文
str()强转成string再连接 
eval功能:将字符串str当成有效的表达式来求值并返回计算结果。string = "1234" eval(string[0:-1])+1.去掉最外侧的引号,执行余下的语句
print("温度是:{:.2f}C".format(1.232)); {:.2f} 槽 输出到后两位
将输入字符串转换为数字时使用eval()函数,不要用int()函数,因为输入的数字可能不是整数;
采用{:.2f}将输出数字变成两位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出,例如,转换后温度为10度,输出为10.00。
chr(u) 返回字符
ord(x) 返回unicode
string = string.upper();
string = string.lower();
string = string.rstrip();删除末尾空格
string = string.lstrip();删除开头空格
string = string.strip();
"A,B,C".split(",")->[A,B,C]
str.count(sub) 返回子串在str中出现的次数
str.replace(old,new) 返回副本,所有old子串被替换为new
str.center(width,"fillchar") 字符串居中,两侧填充
str.strip(chars); 从str中去掉在其左侧和右侧chars中列出的字符"= python=".strip(" =np")结果为ytho
str.join(iter)在iter变量除最后元素外每个元素后增加一个str ",".join("12345")结果为"1,2,3,4,5"


二、列表===============================================================
列表是可变的
len(classmates)直接获得list元素的个数
motocycles[-1]表示最后一个元素
list是一个有序表 append追加在后面 motocycles.append('suzuki')
motocycles.insert(0,'suzuki') 其他元素后移
要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
classmates[1] = 'Sarah'
也可以整体替换:
a = [0,1,2,3,4]
a[:3] = [1,2]
a = [1,2,3,4]
motocycles.pop(i); 出栈并删除可以指定索引 不给参数出栈最后一个元素
del motocycles[0]
del也可用切片一次删除多个元素
del motocycles[0:3]
motocycles.remove('suzuki') 可以根据值删除元素 remove的返回值为None
cars.sort(reverse=True) 
而sorted有返回值
sorted(cars)临时改变
若要永久改变用
cars=sorted(cars)
cars.reverse();
len(cars)
range(1,5) 产生[1,2,3,4]
list(range(1,6))
squares = [value**2 for value in range(1,11)] 列表生成式
list中的元素也可以是不同的类型 也可以包含其他列表称为列表嵌套 被包含的列表只被看做一个元素
使用+运算符连接多个列表 a=[1,2,3] b=[4,5,6] c=a+b c=[1,2,3,4,5,6]
与extend相似 a.extend(b)
大部分列表方法没有返回值 它们会修改列表,但返回None 比如del append extend sort
区分修改列表和新建列表对于编写列表的修改函数尤为重要
修改列表的操作
del(形式特殊) append extend sort reverse
新建列表的操作(新建方法的特点:如果不赋值原始列表不改变)
+ 切片 sorted
调用会修改列表的方法时最好保存一份副本
类似的*对列表进行给定次数重复 a=[0] a=a*4 a=[0,0,0,0]
列表中的内嵌函数
sum() max() min() sum() len()
判断特定的值是否已包含在列表中,可用关键字in
requested_toppings = []
if requested_toppings: 如果列表不为空,返回True


三、元组===========================================================
元组中的值不可改变
元组用圆括号括起来虽然这不是必须的,但方便识别
a=1,2,3,4,5,6 ==== a=(1,2,3,4,5,6)
元组可以进行比较和使用哈希算法,可以对其进行排序
a = 1,2,3,4,-1
a = sorted(a)
(0,1,2)<(0,3,4)==>True
创建单个元素元组,必须在末尾加,没有,被视为字符串或整数
a=(1,)
构造元祖另一方法,用内置函数tuple,如果参数是一个序列,则会构建包含所有元素的元组
a=tuple("123")==> ('1', '2', '3')
虽然不能修改元祖的元素,但可以给存储元祖的变量赋值
dimensions = (200,50)
dimensions = (400,100)
可以对元组进行列表中的新建操作,而修改操作都不可以
可以切片   +操作   sorted
可以利用切片和+操作创建新元组
由于python独特的语法特征,元组可以出现在赋值语句左边
故x,y = y,x可以一行代码进行x,y交换(元组内部可以包含元组)
等价语法 (x,y) = (y,x) 括号可以省略
也可以用for循环遍历元祖






四、字典===========================================================================
字典的顺序往往不可预测
创建空字典用
d={}或dict()
d.get(key,[,value]) 根据Key拿到值,默认返回None,否则返回指定value
del alien_O['points'] 删除键值对
或者d.pop('bob')
for k,v in map.items()
for k in map.keys()
for v in set(map.values()) 直接去重
将列表传递给函数后,函数就可对其进行修改,并且是永久性的。如果要阻止修改列表,传递切片a[:]
定义默认参数要牢记一点:默认参数必须指向不变对象!默认参数也是一个变量,如果指向可变的对象比如列表,则默认参数会改变、
可变参数*numbers 在函数调用时自动组装成tuple
而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。 **kw
如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。def person(name, age, *, city, job):
和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。命名关键字参数必须传入参数名,可以有默认值。
和list比较,dict有以下几个特点:


查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
而list相反:


查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。


这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。


要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key:
五、set==============================================
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
s = set([1, 2, 3])
注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。。
通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:
重复元素在set中自动被过滤:
通过remove(key)方法可以删除元素
set可以看成数学意义上的无序和无重复元素的集合(与java相同),因此,两个set可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
time库==========================================
时间获取:
time()  获取当前时间戳,即计算机内部时间值 返回浮点值 time.time()
ctime() 以一种易读形式返回字符串
gmtime() 返回计算机可以处理的格式
时间格式化:
strftime(tpl,ts) ts=gmtime() tpl="%y-%m-%d %H:%M:%S"
 strptime(str,tpl) str="2018-01-26" 返回计算机可以处理的格式
程序计时:sleep() 
per_counter() 返回一个cpu级别的精准时间计数值,单位是秒值 起点值不确定,差值才有意义




random库===========================================
伪随机数:采用梅森旋转算法生成的随机序列中的元素
random.random() 0-1之间的小数
random.seed(10) 产生种子
默认将当前系统时间作为种子 给了相同种子,则随机出现的结果是相同的,可以进行复现
randint(a,b) 生成一个[a,b]之间的整数
randrange(10,100,10) 以10位步长的整数
扩展随机数函数
getrandbits(k) 生成一个k比特长的随机整数
uniform(a,b) 生成一个[a,b]之间的随机小数
choice([1,2,3,4,5])从序列中随机选择一个元素
random.shuffle(seq) 打乱


其他:
二进制0b开头 八进制0o开头,十六进制0x开头
用round进行四舍五入 round(x,d):对x四舍五入,d是小数截取位数 round(-132.123,2)
x//y 整数除
x**0.5
pow(3,99,10000) 取最后4位
二分支 <表达式>if<条件1>else<条件二>
try<1>except someError<2>else<3>finally<4> 没有异常执行134
while: else: 没有break 则执行else里面的语句
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值