Python 4.基本数据类型
数字 字符串 列表 元组 字典 布尔值
1.可变不可变
可变:列表,字典
不可变:字符串,元组,数字
2.访问顺序
直接访问:数字
顺序访问:字符串,列表,元组
映 射:字典
3.存放元素个数
容器类型:列表,元组,字典
原 子:字符串,数字
一、数字
① int(...)
#将字符串转化为数字 d = "123" z = int(d) print(type(z),z)
二、字符串
① replace/find/join/strip/startwith/split/upper/lower/format
#①find() #从开始往后找,找到第一个后,获取其位置。没找到返回-1 #index方法很类似。但index传入的参数不合理时报错 test3 = "lutingluting" s9 = test3.find("ing") print(s9)
#②replace()#替换:用123替换所以的in test1 = 'LuTingLuTingLuTing' v = test1.replace("in","123") print(v) #用123替换前两个的in v = test1.replace("in","123",2) print(v)
#③upper()#是否全为大写 test11="LuTing" print(test11) s17 = test11.isupper() #转化为大写 s18 = test11.upper() print(s17,s18) #④lower()#是否全为小写 test11="LuTing" print(test11) s17 = test11.islower() #转化为小写 s18 = test11.lower() print(s17,s18) #⑤join() #将字符串中的每一个元素按照指定分隔符进行拼接 test11="弗洛伊德心理哲学" print(test11) t = " " s18 = t.join(test11) print(s18) #⑥strip()#去除指定字符 \t \n可传参数(参数包含其子序列),默认空格 test11=" \nLuTing " print(test11) s17 = test11.lstrip() print("lstrip():"+s17) s17 = test11.rstrip() print(s17) s17 = test11.strip() print(s17) #⑦split() test1 = "testtgh\nsthytsjhh" #以s分割,可单独得到s v = test1.partition("s") print(v) v =test1.rpartition("s") print(v) #以s分割 v = test1.split("s",3) print(v) v = test1.rsplit("s",3) print(v) #分割,只能根据,true , false :是否保留换行 v = test1.splitlines(True) print(v)
三、列表
① append/extend/insert
lists2 = [['Tom', 95.5], ['Jo', 85], ['lt', 59], 22] # 追加尾部 lists2.append(80) lists2.append("lt") lists2.append(['tt', 83]) #扩展原列表,参数必须是可迭代对象(str,列表。。。) lists2.extend(["a",12]) print(lists2) # 在指定索引位置插入元素 lists2.insert(0, ['rr', 100])
② 索引,切片,循环
lists1 = ['runoob', 786, 2.23, 'john', 70.2, ['Tom', 95.5]] print(lists1[0]) # 输出列表的第一个元素 print(lists1[1:3]) # 输出第二个至第三个元素,结果为列表 #转换 li = list("lahsjdjd")#内部使用for循环 print(li) #列表转换字符串:需要写for循环一个一个处理:既有数字又有字符串 v = [11,2,"ly","lt"] v1 = str(v) print(v1)#原样返回 s = "" for i in v: s = s + str(i) print(s)
四、元组
① 索引,切片,循环,一级元素不能被修改
tuples = ('runoob', 786, (2.23, 'john'), [(22,44)],) #tuples[0] = 123 一级元素 tuples[3][0] = 123 #非一级元素 print(tuples) #一般写元组时,推荐在最后加入“逗号”,以和方法区分 tinytuple = (123, 'john',) #索引 v = tuples[0] print(v) # 输出元组的第一个元素 #切片 v = tuples[1:3] print(v) # 输出第二个至第三个的元素 print(tuples[2:]) # 输出从第三个开始至列表末尾的所有元素 print(tinytuple * 2) # 输出元组两次 print(tuples + tinytuple) # 打印组合的元组 #可以被for循环,可迭代对象 for item in tuples: print(item)
五、字典
① get/update/keys/values/items/ for/索引
d = {'one':"This is one",2:"This is two"} tinydict = {'name': (33,22,), 'code': 6734, 'dept': True} #根据索引找 print(d['one']) # 输出键为'one' 的值 print(tinydict.keys()) # 输出所有键 print(tinydict.values()) # 输出所有值 #for循环 for item in tinydict.keys(): print(item) for item in tinydict.values(): print(item) for k,v in tinydict.items(): print(k,v) #根据key获取值,key不存在,指定默认值(None) s = d.get(123,"lt") print(s) #更新 d.update({"sn":220,"ad":30}) print(d) d.update(sno=214,age=23) print(d)
六、布尔值(0 1)
① bool(...)
② None "" () [] {} 0 ==> False
整形,int
Python2中,短的是整形int,太长的是长整型long
Python3中,都是int
1.将字符串转化为数字
c = 123
d = "123"
print(type(c),c)
print(type(d),d)
z = int(d)
print(type(z),z)
e = "a"
#将e按照16进制转化为10进制
y = int(e , base=16)
print(y)
2.bit_length()
age = 10
#当前数字的二进制,至少用几位表示
x = age.bit_length()
print(x)
# 1 1
# 2 10
# 3 11
# 4 100
# 5 101
#字符串 str
#注意:字符串一旦创建,不可修改,修改或者拼接,就会造成重新生成字符串
s='abcde,figklmn!'
print (s) # 输出完整字符串
print (s[0]) # 索引:输出字符串中的第一个字符
print (s[2:5]) # 切片:输出字符串中第三个至第五个之间的字符串 >=2 <5
print (s[-5:-2]) # 输出字符串倒数第三个,再往前数
print (s[2:]) # 输出从第三个字符开始的字符串
print (s * 2) # 输出字符串两次
print (s + "TEST") # 输出连接的字符串
print (len(s)) # 输出字符串的长度
#首字母大写
s1 = test1.capitalize()
print(s1)
test2 = 'LuTing'
#所有变小写,casefold更厉害,很多未知的对应关系变小写
s2 = test2.casefold()
print(s2)
#大小写转换
s2 = test2.swapcase()
print("swapcase():"+s2)
s3 =test2.lower()
print(s3)
#设置宽度,并将内容居中
# 20 代指总长度
# 路 空白部分填充,一个字符,可有可无
s4 = test1.center(20,"路")
print(s4)
s4 = test1.ljust(20,"路")
print(s4)
s4 = test1.rjust(20,"路")
print(s4)
#在字符串中寻找子序列出现的次数
s5 = test3.count("lu")
print(s5)
s6 = test3.count("lu",5 ,8)
print(s6)
#是否以某个子序列开始/结尾
s7 = test3.startswith("ting",2 ,8)
print(s7)
s8 = test3.endswith("ing",2 )
print(s7)
#格式化,将一个字符串中的占位符替换为指定的值
test4 = "i am {name} age {age}"
s10 = test4.format(name="路亭",age=18)
print(s10)
test5 = "i am {0} age {1}"
s11 = test5.format("路亭",18)
print(s11)
#格式化,参数为字典
s12 = test4.format_map({"name":"路亭","age":18})
print(s12)
test6 = "lt723"
#字符串是否只包含字母、数字
s13 = test6.isalnum()
#字符串是否只包含字母、汉字
s14 = test6.isalpha()
print(s13)
print(s14)
test7 = "lt723"
#字符串是否只包含数字,但特殊格式的数字则有区分 eg:2,二,②
s15 = test7.isdecimal()
s16 = test7.isdigit()
s17 = test7.isnumeric()
print(s15,s16,s17)
#expandtabs() 断句20
test8="username\temail\tpassword\nluotao\t134.qq.com\t123\nluotao\t134.qq.com\t123\nluotao\t134.qq.com\t123"
s17 = test8.expandtabs(20)
print(s17)
#字母,数字,下划线 :标识符 class def
test9="def"
s18 = test9.isidentifier()
print(s18)
#是否存在不可显示的字符
# eg:\t 制表符 \n 换行
test10="abcde\ndkdldld"
s18 = test10.isidentifier()
print(s18)
# 是否字符全都是空格
test10=" "
s18 = test10.isspace()
print(s18)
# 是否是标题:每一个单词首字母大写
test10="I Am luo"
s18 = test10.istitle()
print(s18)
#讲字符串转化为标题
t = test10.title()
print(t)
s18 = t.istitle()
print(s18)
#"aeiou","12345"用后面对应前面的进行替换
v = "abcdef;ghijkl;mnopq;rstuvw,xyz"
m = str.maketrans("aeiou","12345")
new_v = v.translate(m)
print(new_v)
#列表 list
# -*- coding: utf-8 -*
# list
#有序,元素可以被修改
lists1 = ['runoob', 786, 2.23, 'john', 70.2, ['Tom', 95.5]]
tinylist = [123, 'john']
"""
print(lists1) # 输出完整列表
print(lists1[0]) # 输出列表的第一个元素
print(lists1[1:3]) # 输出第二个至第三个元素,结果为列表
print(lists1[2:]) # 输出从第三个开始至列表末尾的所有元素
print(tinylist * 2) # 输出列表两次
print(lists1 + tinylist) # 打印组合的列表
"""
#转换
li = list("lahsjdjd")#内部使用for循环
print(li)
#列表转换字符串:需要写for循环一个一个处理:既有数字又有字符串
v = [11,2,"ly","lt"]
v1 = str(v)
print(v1)#原样返回
s = ""
for i in v:
s = s + str(i)
print(s)
#修改
lists1[1] = "update"
print(lists1)
lists1[1:3] = ["first","second"]
print(lists1)
# in 操作
v = 786 in lists1
print(v)
lists2 = [['Tom', 95.5], ['Jo', 85], ['lt', 59], 22]
print(lists2[1])
print(lists2[1][1])
print(lists2[-1])
print(lists2[-2])
# 追加尾部
lists2.append(80)
lists2.append("lt")
lists2.append(['tt', 83])
#扩展原列表,参数必须是可迭代对象(str,列表。。。)
lists2.extend(["a",12])
print(lists2)
#拷贝 浅拷贝
v = lists2.copy()
print(v)
#清空列表
v.clear()
print(v)
# 在指定索引位置插入元素
lists2.insert(0, ['rr', 100])
#删除列表中的指定值,左边优先
lists2.remove(22)
# 删除某个值(1.指定索引,2.默认最后一个),并获取删除的值
v = lists2.pop()
print(v)
# 删除索引位置
v = lists2.pop(3)
print(v)
#删除
del lists1[0]
print(lists1)
del lists1[0:2]
print(lists1)
#根据值获取当前值的索引位置(左边优先)
v = lists2.index(22)
#将当前列表进行翻转
lists2.reverse()
print(lists2)
#列表的排序
lists2.sort()#默认升序
print(lists2)
lists2.sort(reverse=True)#降序
print(lists2)
# tuple
#有序,一级元素不可被修改/增加/删除
① 索引,切片,循环
# tuple
#有序,一级元素不可被修改,增加,删除
tuples = ('runoob', 786, (2.23, 'john'), [(22,44)],)
#tuples[0] = 123 一级元素
tuples[3][0] = 123 #非一级元素
print(tuples)
#一般写元组时,推荐在最后加入“逗号”,以和方法区分
tinytuple = (123, 'john',)
#索引
v = tuples[0]
print(v) # 输出元组的第一个元素
#切片
v = tuples[1:3]
print(v) # 输出第二个至第三个的元素
print(tuples[2:]) # 输出从第三个开始至列表末尾的所有元素
print(tinytuple * 2) # 输出元组两次
print(tuples + tinytuple) # 打印组合的元组
#可以被for循环,可迭代对象
for item in tuples:
print(item)
# 转换
s = "luotao"
li = [12,"lt",(203,203,)]
v = tuple(s)
print(v)
v = list(tuples)
print(v)
#获取指定元素在元组中出现的次数
v = tuples.count(786)
print(v)
#获取指定元素的索引位置
v = tuples.index(786)
print(v)
# dict
#字典是无序的
# dict
#字典是无序的
#布尔值(True=1,False=0),列表,字典不能作为字典的key
#字典的value值可以是任何值
d = {'one':"This is one",2:"This is two"}
tinydict = {'name': (33,22,), 'code': 6734, 'dept': True}
#根据索引找
print(d['one']) # 输出键为'one' 的值
print(tinydict.keys()) # 输出所有键
print(tinydict.values()) # 输出所有值
#字典支持del删除
del d["one"]
print(d)
#for循环
for item in tinydict.keys():
print(item)
for item in tinydict.values():
print(item)
for k,v in tinydict.items():
print(k,v)
print("################################")
#############################################
#根据序列,创建字典,并指定统一的值
v = dict.fromkeys([11,22,(22,33,)],123)
print(v)
v1 = dict.copy(v)
print(v1)
dict.clear(v1)
print(v1)
#根据key获取值,key不存在,指定默认值(None)
s = d.get(123,"lt")
print(s)
#根据key删除并获取值,key不存在,指定返回值
v = d.pop(2,1)
print(v)
k,v=tinydict.popitem()
print(d,k,v)
#设置值
#已存在,不设置,获取当前key对应的值
#不存在,设置,获取当前key对应的值
v = d.setdefault("k1","tt")
print(d,v)
#更新
d.update({"sn":220,"ad":30})
print(d)
d.update(sno=214,age=23)
print(d)