随机数:
random模块
import random
random.randint(1,2) #[1,2]
random.randrange(1,2) #[1,2)
random.choice(lst) #从一个列表中随机选择一个元素出来
random.shuffle(lst) #打乱列表(效率低)
random.sample(lst,#) 在lst中随机取#个样本,每个样本只能取1次,并输出列表
元组tuple :不可变的(与只读列表很像)
表示:
t1 = ()
t2 = tuple()
t3 = (1) #这个不是元组
t4 = (1,) #这个是,必须有逗号
t5 = (1,2,[1,2,3],'a')
t6 = tuple(lst)
t7 = tuple(range(4))
元组:一旦创建,不可改变
可以更改元组内的列表,只改变列表,但是地址(门牌号)不会改变
t8 = (1,)*5
(1,1,1,1,1)
如果要改:
l8 = list(t8) #转换成列表再改
index(t1)
count(#)
命名元组namedtuple #也是不能修改的
point = namedtuple('point',['x','y'])
p1 = point(3,4)
打印p1
point(x=3,y=4)
point类型是type (类)
例:
Student = nametuple('A','name,age')
tom = Student('tom',20)
打印tom
A(name='tom',age=20)
nametuple?? ##显示源码
冒泡法
从左至右,两两比较排列
优化思想:
如果在一次循环中没有发生交换,就是已经达到目标顺序,则不用再交换
字符串
x = 1 y = 4 s1 = f"{x}->{y}" 打印 {1}->{4} s1可以被索引、迭代,但一旦定义,不可更改 连接列表 “。。”.join(['1','2','3']) 用。。连接列表中字符串 打印出: ‘1。。2。。3’ 例如前面‘。。’改成\n可以换行 map(str,range(10)) 更改类型 map: 映射 s4 = ','.join('abcdef') s4.split(',') #默认使用空白字符分割,尽量长的找空白字符,立即返回一个列表 括号内为切割分隔符 s5.split(maxsplit=2) #maxsplit:最大切割数 s5.rsplit(maxsplit=2) #从右向左切 s5.splitlines() 按换行符切,并不保留,()内加True保留换行符 s4.partition(',') #返回一个三元组 #切一刀 #保留分隔符 ‘aBcD’.lower :全变小写 ‘aBcD’.upper :全变大写 'aBcD'.swapcase() :大小写互换 s10.title() s10.capitalize() s10.center(30,'0') 居中,0填充 str(1).zfill(10) '1'.ljust #左对齐 '1'.rjust #右对齐 '1'.replace('a','the',n) #把a换成the,执行n次,最后可不加 #如没有搜到,不替换,生成新的字符串 s1.replace(' ', ' \t).split().append('c') #链式编程 S.strip() #默认将两端空白字符去掉 () #去掉直到括号内的所有字符 S.index('very') #查找索引,从0开始,查不到报错 S.find('vectory') #返回负数表示没有找到,找到返回索引 S.rfind('v') #从右开始找索引 S.startswith('x',4,6) 判断字符串是否以x开头(后面可以指定区间),输出为bool S.endswith('x',4,10) 判断是否x结尾,输出为bool 字符串格式化 %03d(f) #以×××数字(浮点型)打印,占用3个位置,用0补 %04s #以字符串类型打印,用空格补位 'my name is %s, i am %d' % (wayne,30) 后面只能跟一个,可以用元组
*******重要
format #函数格式化字符串
'{} {} {}'.format(1,2,['a']) #{}表示一个参数,以字符串形式输出,可以溢出
例 '{2}{1}{0}'.format(1,2,[a]) 打印出 [a]21
import datetime d=datetime.datetime.now() '{}'.format.(d)