随机数:
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)