一 数据类型一览
int : 数字 1,2,3 等 ,用于计算
bool : True,False. 用于判断
string : 存储少量数据,用于操作
list : 存储大量数据,任何数据都可存储
[ 1,2,"sdffds",[1,2,3],'dfdfdf']
元祖:存储大量数据,任何数据都可存储,但是只读。
dict(字典): 存储大量关系型数据,查询速度很快。
第一种:{‘name’ : 'john' , 'age' : '22' , 'height' : '180'}
第二种 : { 'john' : [22,180,....... ] , 'oliver' : [.........] }
集合 : 与list类似,主要用于 求交集 和 求并集 。
二 基础数据类型及类型转换
1 int
bit_length() 当十进制用二进制表示时,最少使用的位数
'''bit_length
1 0000 0001 1
2 0000 0010 2
3 0000 0011 2'''
2 bool
只有true 和 false 代表真假。
真 = 数字 = true、假 = 0 = false
3 类型转换
第一种:数字(int)与 字符串(str)
int-->str str(int)
str-->int int(str) 注意:只有字符串内容是数字时,才可转换。
第二种:数字(int)与 布尔值(bool)
int-->bool bool(int) 非零数 = true 0 = false
bool-->int int(bool) true = 1 false = 0
#ps: 进行死循环时,选择效率高的
whileTrue:pass
while 1: 效率高pass
第三种:布尔值(bool)与 字符串(str)
str-->bool s = " " 空字符串为false s = "0",s = "非空字符串"为true
bool-->str
第四种:字符串(str)与 列表(list)
str-->list li =s.split()
list-->str s = " ".join(li)
join
#'连接符,默认为拼接' . join(可迭代对象)#返回字符串#除了int,bool,含有多个元素的字符串,列表等可迭代
li = ['taibai','alex','wusir','egon','女神',]
s= '++++'.join(li)print(s)#taibai++++alex++++wusir++++egon++++女神
第五种: list --set
#去重
li = [1,2,33,33,2,1,4,5,6,6]
set1=set(li)print(set1) #{1, 2, 33, 4, 5, 6} 将列表变集合去重
li =list(set1)print(li) #[1, 2, 33, 4, 5, 6] 再将去重的集合变列表
4 str
字符串的索引和切片
索引:通过下标选取字符串中的元素,下标从零开始。(从左到右)
切片:通过索引截取字符串中的元素,形成新的字符串。(原则:顾头不顾尾)
a = "ABCDEFG"
#1 取单个元素
print(a[3]) #-->D
#2 取一段 ,[首:尾:步长]
print(a[0:3]) #-->ABC 顾头不顾尾
print(a[0:]) #默认到最后 或者print(a[:])
print(a[0:-1]) #-1就是最后一个 -->ABCDEF
print(a[-1::-1])#--> GFEDCBA
#3 隔几个取
print(a[0:5:2]) #加步长-->ACE
print(a[5:0:-2]) #反向加步长-->FDB
字符串的操作
s = "AKKscDxx"
#1 首字母大写
print(s.capitalize())
#2 全大写,全小写 用于验证不区分大小写的密码、验证码
print(s.upper())
print(s.lower())
#3 大小写翻转
print(s.swapcase())
#4 每个(空格,数字,特殊字符隔开的)单词的首字母大写
s= 'big small7middle&hi '
print( s.title())#-->Big Small7Middle&Hi
#5 内同居中,总长度,空白处填充(空格或其他字符)
s="a"
print(s.center(10,"*")) #-->****aa****
#6 \t 前面的补全
“““默认将一个tab键变成8个空格,如果tab前面的字符长度不足8
个,则补全8个,如果tab键前面的字符长度超过8个不足16个则
全16个,以此类推每次补全8个。”””
s = "hqw\tdfehdgyb"
print( s.expandtabs())#-->hqw dfehdgyb
#7 startswith 判断是否以...开头 # endswith 判断是否以...结尾
s = "dkfjdkfasf54"
print(s.endswith('jdk',3,6)) #-->true
# 返回的是布尔值 顾头不顾腚
print(s.startswith("kfj",1,4))#-->true
print(s.startswith(“dk"))#-->true
#8 通用方法
l = len(s) #求字符串s的长度,返回值为 int
#9 查找字符串中的元素
# find 通过元素找索引,找不到返回-1(int)
# index通过元素找索引,找不到报错
# 找到返回下标数字(int)
s = 'alexWUsir'
s8 = s.find('A')
s81 = s.index('A')
print(s81,type(s81))
s= "dkfjdkfasf54"
print(s.find("fjdk",1,6)) # -->返回 2
#10 去空格(特殊符号等) 默认删除前后空格,用于用户输入
s = "*egon**"
print(s.strip('*'))#-->egon
print(s.lstrip('*'))#-->egon**
print(s.rstrip('*'))#-->*egon
#s.strip(“%$#”) 分别删除%¥#
#11 统计字符串中某个元素出现的次数 列表、元祖等通用
s = "adfad"
print(s.count("a",0,4) ) # 可切片
#12 拆分 默认以空格拆 可将字符串拆成列表,得到的列表不含 分割元素
# 注意原则:一分为二
s = ';alex;wusir;taibai'
l = s.split('a')print(l)#-->[';', 'lex;wusir;t', 'ib', 'i']
#13 格式化输出fomat(更高级)
#format的三种格式化输出
# s = '我叫{},今年{},爱好{},再说一下我叫{}'.format('太白',36,'girl','太白')
# print(s) 对应
# name = input('请输入名字:')
# s = '我叫{0},今年{1},爱好{2},再说一下我叫{0}'.format(name,36,'girl')
# print(s) 索引
# name = input('请输入名字:')
# s = '我叫{name},今年{age},爱好{hobby},再说一下我叫{name}'.format(age=18,name=name,hobby='girl')
# print(s) 变量
#14 replace (旧的,新的,个数)
s = '哈哈顶顶顶顶哈哈'
s = s.replace('哈哈','呵呵',1)
print(s)-->#呵呵顶顶顶顶哈哈 只替代一个
#15 is系列 返回 true false
name='jinxin123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isdigit()) #字符串只由数字组成
5 列表list
列表的索引和切片与字符串相同,且得到的是列表。
列表的操作(增删改查)与字符串操作不一样,对列表进行操作将改变原列表,对字符串操作创建新字符串,原字符串不变。
通常对列表的操作与对列表中字符串的操作结合进行。
li = ['alex','wusir','egon','女神','taibai']#增加 append
li.append("nihao")print(li)#-> ['alex', 'wusir', 'egon', '女神', 'taibai', 'nihao']
#索引插入insert(索引,对象)
li.insert(2,123)#['alex', 'wusir', 123, 'egon', '女神', 'taibai']
#迭代插入extend(可迭代对象)分解到元素再加入
li.extend(123) #报错 数字不可迭代
li.extend([1,2,"asd"])#['alex', 'wusir', 'egon', '女神', 'taibai', 1, 2, 'asd']
增
li = ['taibai','alex','wusir','egon','女神',]#按索引删 pop()
#pop() 默认删最后一个,且可返回删除的值
print(li.pop(2),li)#wusir ['taibai', 'alex', 'egon', '女神']
#按元素删 remove()
li.remove('taibai')print(li)#-->['alex', 'wusir', 'egon', '女神']
#清空 clear()
li.clear()print(li) #-->[]
#在内存中删除列表 del li#切片去删 del li[x:y]
del li #报错 li 不存在
del li[0:2] #['wusir', 'egon', '女神']
print(li)
删
#直接赋值改变
li[0] = "男神"#-->['男神', 'alex', 'wusir', 'egon', '女神']
#先切片删除,再添加(添加不需要等于删除)
li[0:3] = '云姐pl'#-->['云', '姐', 'p', 'l', 'egon', '女神']
li[0:3] = [1,2,3,'春哥','咸鱼哥']#-->[1, 2, 3, '春哥', '咸鱼哥', 'egon', '女神']
print(li)
改
#循环查
for i inli:print(i)#切片查某一段
print(li[0:2])
查
1 li = ['taibai','武藤兰','苑昊',['alex','egon',89],23]2 #print(li[1][1])
3 #li[0] = li[0].capitalize()
4
5 #li[2] = '苑日天'
6 #print(li[2].replace('昊','ritian'))
7 #li[2] = li[2].replace('昊','ritian')
8
9 #li[3][0] = li[3][0].upper()
10 #print(li)
列表的嵌套
6 通用方法
len()
#求长度
s = "adfad"
print(len(s)) #--> 5 (个字符)
a= ["q", "wss", "qssss", "sssr", "t", "y"]print(len(a)) #--> 6 (个元素)
count ()
#统计某个元素出现的次数
s = "adfad"
print(s.count("a",0,4) ) #可切片
a= ["q","w","q","r","t","y"]print(a.count("q"))
index()
#找出某个值第一个匹配项的索引位置
a = ["q","w","r","t","y"]print (a.index("r"))
s= 'alexWUsir'
print(s.index('al'))
reverse()字符串不能用
#反转元素
li = ['taibai','alex','wusir','egon','女神',]
li.reverse()print(li)#--> ['女神', 'egon', 'wusir', 'alex', 'taibai']
sort()字符串不能用
li = ['taibai','alex','wusir','egon','女神',]#正向排序 再原列表的基础上
li.sort()print(li)#-->['alex', 'egon', 'taibai', 'wusir', '女神']#反向排序
li.sort(reverse=True)print(li)#-->['alex', 'egon', 'taibai', 'wusir', '女神']
7 元祖
#元祖 只读列表,可循环查询,可切片。
#儿子不能改,孙子可以改
tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon')
tu[4][3]=tu[4][3].upper()print(tu)#-->(1, 2, 3, 'alex', [2, 3, 4, 'TAIBAI'], 'egon')
#元祖 如果元祖里面只有一个元素且不加,那此元素是什么类型,就是什么类型。
tu1 = (1)
tu2= (1,)print(tu1,type(tu1)) #1
print(tu2,type(tu2)) #(1,)
8 range
#列表,盛放数字 (首,尾,步长)#for i in range(3,10): #顾头不顾尾 3.4...9#for i in range(10): #0.1.2...9#for i in range(0,10,3):#0 3 6 9#for i in range(10,0,-2):#10 8 6 4 2#for i in range(10,-1,-2):#10 8 6 4 2 10 8 ...2
9 for
for i in s: if i in s:
#输出元素
li = [1,2,3,5,'alex',[2,3,4,5,'taibai'],'afds']for i inli:if type(i) ==list:for k ini:print(k)else:print(i)for i inrange(len(li)):if type(li[i]) ==list:for j inli[i]:print(j)else:print(li[i]
10 enumerate
li = ['alex','taibai','wusir','egon']for i inli:print(li.index(i),i)
0 alex1taibai2wusir3egon#li需可迭代,index为索引,可加
for index,i in enumerate(li,100):print(index,i)100alex101taibai102wusir103 egon