基本操作
in / not in
a in / not in b
返回True和False
index 索引
0~len(x)-1 #顺序索引
-len(x)~-1 #反向,注意第一个为-len(x)最后一个为-1
#当作首位减一,退到最后一个
slice 切片
x="abcdefg"
y=x[1:5:1] #y="bcde"
print()
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
调用参数输出
print("第{}期,当期存入{}元,账户累计{}元".format(nper,current_money,total_money))
格式化输出
>>> pi = 3.141592653
>>> print('%10.3f' % pi) #字段宽10,精度3
3.142
>>> print("pi = %.*f" % (3,pi)) #用*从后面的元组中读取字段宽度或精度
pi = 3.142
>>> print('%010.3f' % pi) #用0填充空白
000003.142
>>> print('%-10.3f' % pi) #左对齐
3.142
>>> print('%+f' % pi) #显示正负号
+3.141593
转换类型 含义
d,i 带符号的十进制整数
o 不带符号的八进制
u 不带符号的十进制
x 不带符号的十六进制(小写)
X 不带符号的十六进制(大写)
e 科学计数法表示的浮点数(小写)
E 科学计数法表示的浮点数(大写)
f,F 十进制浮点数
g 如果指数大于-4或者小于精度值则和e相同,其他情况和f相同
G 如果指数大于-4或者小于精度值则和E相同,其他情况和F相同
C 单字符(接受整数或者单字符字符串)
r 字符串(使用repr转换任意python对象)
s 字符串(使用str转换任意python对象)
字符串的两种格式化输出方法:
1)%
print ('我叫%s, 身高%scm' % (name,height))
#后面的内容依次代替前面的%s,另外还有%d、%x、%f等等
2)format
print('姓名是 {},年龄是 {}'.format('Tom',20))
print('姓名是:{1},年龄是:{0}'.format(20,'Tom'))
print('姓名是:{name},年龄是:{age}'.format(name='Tom',age=20))
print('姓名是:{0:*^11}\n年龄是:{1:*^11}'.format('Tom',20))
#姓名是:****Tom****
#年龄是:****20*****
^是居中,< >分别为左对齐和右对齐
input()
Python3将Python2的input()和raw_input()整合,Python3的input()得到的是字符串
可以通过类型转换得到想要的类型
a=int(input())
print(type(a)) #int
一次输入多个变量(利用eval()或map())
a,b=eval(input()) #输入不同变量用逗号隔开
print(a,b)
a,b,c=map(str,input().split(',')) #输入多个字符串用逗号隔开
a,b,c=map(int,input().split()) #输入多个整数用空格隔开
list列表
列表是一个容器,类似于数组但是里面数据类型(什么类型都支持)可以不一样
列表的运算:
比较运算:
通过s与m的比较得出,若进行><判断,则相应位置的数据类型要一致
list与str的区别
list能够改变其中单个的值(和数组一样),str不能
切片赋值
当步数为1时:
可以直接赋值(被替换的和替换的长度可以不一致),不影响其他位
步数不为1时:
长度必须一致
列表的属性方法
L.index(v[,begin[,end]]) #从下标begin开始至end结束查找v并返回其下标
L.sort() #排序,默认为升序,L.sort(reverse=True)为降序
L.reverse() #列表反转
L.pop([index]) #删除下标为index的元素,不加index默认删除最后一个元素,有点像出栈
更多可查help(list)
列表推导式(用可迭代对象来生成列表元素)
语法:
[表达式 for 变量 in 可迭代对象 if 条件表达式]
if可无
L= [x**2 for x in range(1,11) if x%2==0]
#[4,16,36,64,100]
列表推导式的嵌套
语法:
[表达式1 for 变量1 in 可迭代对象1 (if 条件表达式1) for 变量2 in 可迭代对象2 (if 条件表达式2)]
L=[x*y for x in [1,2,3] for y in [3,2,1]]
#[3,2,1,6,4,2,9,6,3] x中每一个都乘以y中每一个
元组 tuple
元组就是不能被改变的列表
区别在于:
t=(1,2,3) #元组用小括号
t=10, #即使只有一个元素也要加逗号,与整型区别
t=(10,) #type(t)=tuple
字典 dict
内容包括键值key和值value,字典里key是唯一的,value不唯一,通过key来得到value
格式:
key:value
d={} #空字典
d=dict() #空字典
d={"age":20,"name":"zhangsan"} #创建字典
d[age] #20
key可以是任意数据类型(list、dict、set(集合、我没看)除外)
字典的遍历(用items())
d={1:100,2:200,3:300}
for k,v in d.items()
print(k,":",v)
结果
d={1:100,2:200,3:300}
for k in d.keys() #keys()
print(k) #输出键
d={1:100,2:200,3:300}
for v in d.values() #values()
print(v) #输出值
添加和修改字典的元素
d={} #创建空字典
d["name"]="zhangsan" #key没有为name的,故添加
d["name"]="xiaoming" #已经key为name则修改
字典推导式
number=[1,2,3,4]
name=["a","b","c","d"]
people={number[i] : name[i] for i in range(4) if number[i]%2==0}
#与列表类比
深浅拷贝
浅拷贝
L2实际上是指向L1,并没有给L2分配实际空间
深拷贝(要导入copy模块)
单独分配了空间故L改变时L2不改变
range()
range([start,] stop [,step])
start默认为0,step默认为1
常用用法(与for)
for i in range(1,10):
print(i**2) #结果为1 4 9...
range(1,5) #[1,2,3,4]
print(range(1,5)) #打印为range(1,5)
ran=range(1,5)
r=list(ran)
print(r) #打印为[1,2,3,4]
为什么会出现上述情况?
因为range()返回的不是列表,而是一个可迭代对象
list()函数是迭代器,将range()返回的对象变成列表
split()
str1.split(m[,num])[[n]] #返回值为列表
m为分隔符,即遇到m就分割
num为分割次数,省略即分割所有
[n]表示取分割后下标为n的一项
利用split()可将字符串转化为列表
reverse()
reverse()用于反向列表中的元素
a=[1,2,3,4,5]
a.reverse() #[5,4,3,2,1]
需注意的是reverse()没有返回值,故
print(a.reverse()) #None
center()
格式:
str.center(width[, fillchar]) #width为总宽度
#fillchar当然是填充字符
center()用于将字符串居中且填充某字符
a="python"
a.center(10,*) #**python**
随机函数
import random
random.choice("abc123") #在abc123中随机选择一个字符
random.random() #[0,1)中随机生成一个实数
random.randrange(1,100,4) #[1,100]生成的数为1+4n,1和4可省
random.randint(a,b) #[a,b]内随机生成一个整数