1. 数据类型
1.1 数字int
1.1.1 int类型的使用方法
1)bit_length()方法:当十进制用二进制表示时,最少使用的位数
范例
v = 11
data = v.bit_length()
print(data)
执行结果
4
1.2 字符串str
1.2.1 字符串的索引
索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。
范例
s = 'ABCDLSESRF'
s1 = s[0]
print(s1)
s2 = s[2]
print(s2)
s3 = s[-1]
print(s3)
s4 = s[-2]
print(s4)
执行结果:
A
C
F
R
1.2.2 字符串的切片
切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾尾)。
范例
s = 'ABCDLSESRF'
s5 = s[0:4]
print(s5)
s6 = s[0:-1] # -1 是列表中最后一个元素的索引,但是要满足顾头不顾尾的原则,所以取不到F元素
print(s6)
s7 = s[:] # 默认到最后
s8 = s[0:] # 默认到最后
print(s7,s8)
s = 'ABCDLSESRF' # s[首:尾:步长]
s10 = s[0:5:2] # 正向步长
print(s10)
s11 = s[4:0:-1] # 反向步长
print(s11)
s12 = s[3::-1] # 反向步长
print(s12)
s13 = s[3::-2] # 反向步长
print(s13)
s14 = s[-1::-1] # 反向步长
print(s14)
s15 = s[::-1] # 反向步长
print(s15)
执行结果:
ABCD
ABCDLSESR
ABCDLSESRF ABCDLSESRF
ACL
LDCB
DCBA
DB
FRSESLDCBA
FRSESLDCBA
1.2.3 字符串的常用操作方法
- capitalize()方法
capitalize() 将字符串的第一个字母变成大写,其他字母变小写。
范例
s = "alexWUsir"
s1 = s.capitalize()
执行结果
Alexwusir
- lower()方法与upper()方法
lower() 方法转换字符串中所有大写字符为小写。
upper() 方法将字符串中的小写字母转为大写字母。
范例
s = "alexWUsir"
s1 = s.upper()
s2 = s.lower()
print(s1)
print(s2)
执行结果
ALEXWUSIR
alexwusir
应用范例
s_str = "acEQ1"
you_input = input("请输入验证码,不区分大小写:")
if s_str.upper() == you_input.upper():
print("输入成功")
else:
print("请重新输入")
执行结果
请输入验证码,不区分大小写:aceq1
输入成功
- swapcase() 方法
swapcase() 方法用于对字符串的大小写字母进行转换
范例
s = "alexWUsir"
s3 = s.swapcase()
print(s3)
执行结果
ALEXwuSIR
- title()方法
title() 方法返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())。
简易说明:每个隔开(特殊字符或者数字)的单词首字母大写
范例
s1 = "alex egon wusir"
s2 = "alex*egon-wusir"
s3 = s1.title()
s4 = s2.title()
print(s3)
print(s4)
s5 = "fade,crazy*w4rri0r_songsong node_3"
s6 = s5.title()
print(s6)
执行结果
Alex Egon Wusir
Alex*Egon-Wusir
Fade,Crazy*W4Rri0R_Songsong Node_3
- center()方法
center() 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格。
简易说明:居中,空白填充
范例
s = "alexWUsir"
s1 = s.center(20)
s2 = s.center(20,'~')
print(s1)
print(s2)
执行结果
alexWUsir
~~~~~alexWUsir~~~~~~
- expandtabs()方法
expandtabs() 方法把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8。
范例
s = "alex\tsir"
s1 = s.expandtabs()
print(s1)
s2 = "a\tb"
print(s2)
print(s2.expandtabs())
print(s2.expandtabs(20))
执行结果
alex sir
a b
a b
a b
- startswith()方法 与 endswith()方法
startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。
判断以什么开头与结尾
范例
s = 'alexWUsir'
s1 =s.startswith('alex')
s2 = s.startswith('e',2,5) # 以2开头的索引位置,以5结尾的索引位置
print(s1)
print(s2)
s3 = "Hello World!"
print(s3.endswith("!"))
print(s3.endswith("#"))
执行结果
True
True
True
False
应用范例
s = 'alexWUsir'
if s7:
pass
elif s.startswith('bl'):
pass
- find()方法
find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。
简易说明:通过元素找索引,找不到返回-1
范例
s = "alexWUsir"
s1 = s.find("W")
s2 = s.find("A")
print(s1)
print(s2)
s3 = "Hello World!"
print(s3.find("o"))
print(s3.find("ok"))
print(s3.find("o",0,3))
print(s3.find("o",0,5))
执行结果
4
-1
4
-1
-1
4
- index()方法
index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。
简易说明:通过元素找索引,找不到报错
范例
s = "alexWUsir"
s1 = s.index("W")
print(s1)
s = "Hello World!"
print(s.index("o"))
print(s.index("o",5,8))
执行结果
4
4
7
- strip()方法 与 lstrip()方法 与 rstrip()方法
strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
lstrip() 方法用于截掉字符串左边的空格或指定字符。
rstrip() 删除 string 字符串末尾的指定字符(默认为空格)
范例
s = " alexWUsir "
s1 = s.strip()
s2 = s.lstrip()
s3 = s.rstrip()
print(s1)
print(s2)
print(s3)
s4 = "alexWUsir%"
s5 = s4.strip("%")
print(s5)
s6 = " *a%lexWUsi* r%"
s7 = s6.strip(" %*")
print(s7)
执行结果
alexWUsir
alexWUsir '
' alexWUsir
alexWUsir
a%lexWUsi* r
应用范例
username = input('请输入名字:').strip()
if username =='春哥':
print('恭喜春哥发财')
执行结果
请输入名字: 春哥
恭喜春哥发财
- split()方法 与 rsplit()
split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串
rsplit() 方法通过指定分隔符对字符串进行分割并返回一个列表,默认分隔符为所有空字符,包括空格、换行(\n)、制表符(\t)等。类似于 split() 方法,只不过是从字符串最后面开始分割。
简易说明:拆分str ----> list
s = "hello world!"
print(s.split())
print(s.split("o"))
print(s.split("l"))
print(s.rsplit("o"))
print(s.rsplit("o",1))
s = "alex wusir taibai"
l1 = s.split()
print(l1)
s2 = ';alex;wusir;taibai'
l2 = s.split(';')
print(l2)
l3 = s.split('a')
print(l3)
执行结果
['hello', 'world!']
['hell', ' w', 'rld!']
['he', '', 'o wor', 'd!']
['hell', ' w', 'rld!']
['hello w', 'rld!']
['alex', 'wusir', 'taibai']
['alex wusir taibai']
['', 'lex wusir t', 'ib', 'i']
12)format()方法
范例1
s3 = "My name is {0}, I am {1} years old."
print(s3.format("rock",23))
s3 = "My name is {0}, I am {0} years old."
print(s3.format("rock",23))
s3 = "My name is {name}, I am {age} years old."
print(s3.format(name="alex",age=22))
执行结果
My name is rock, I am 23 years old.
My name is rock, I am rock years old.
My name is alex, I am 22 years old.
范例2
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)
执行结果
我叫太白,今年36,爱好girl,再说一下我叫太白
请输入名字:ada
我叫ada,今年36,爱好girl,再说一下我叫ada
请输入名字:alex
我叫alex,今年18,爱好girl,再说一下我叫alex
- replace()方法
replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
范例1
s = "hello world!"
print(s.replace("h","H"))
print(s.replace("o","-"))
print(s.replace("o","-",1))
执行结果
Hello world!
hell- w-rld!
hell- world!
范例2
s = '来看待街坊邻居复合大师街坊法好的撒见客户'
s11 = s.replace('街坊','老王',1)
print(s11)
执行结果
来看待老王邻居复合大师街坊法好的撒见客户
- isalnum()方法
isalnum() 方法检测字符串是否由字母和数字组成。
范例
print("22".isalnum())
print("22d".isalnum())
print("22d!".isalnum())
执行结果
True
True
False
- isalpha()方法
isalpha() 方法检测字符串是否只由字母组成。
范例
print("22".isalpha())
print("dd".isalpha())
执行结果
False
True
- isdigit()方法
isdigit() 方法检测字符串是否只由数字组成。
范例
print("33.33".isdigit())
print("3333".isdigit())
执行结果
False
True
- isspace() 方法
isspace() 方法检测字符串是否只由空格组成。
范例
s = " "
print(s.isspace())
s = ""
print(s.isspace())
s = "abcd"
print(s.isspace())
执行结果
True
False
False
1.2.4 字符串的公共操作方法
- len()方法
(此为公共方法)
len() 方法返回对象(字符、列表、元组等)长度或项目个数。
范例
s = "alex二哥"
l = len(s)
print(l)
执行结果
6
- count()方法
(此为公共方法)
count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
简易说明:统计个数
范例
s = "alexaa wusirl"
s1 = s.count("a")
s2 = s.count("y")
s3 = s.count("al")
print(s1)
print(s2)
print(s3)
s = "Hello World!"
print(s.count("o"))
print(s.count("o",0,5))
执行结果
3
0
1
2
1
1.3 列表list
1.3.1 列表的切片(查)
范例
li = ['alex',[1,2,3],'wusir','egon','女神','taibai']
l1 = li[0]
print(l1)
l2 = li[1]
print(l2)
l3 = li[0:3] # 取第一到第三
print(l3)
执行结果
alex
[1, 2, 3]
['alex', [1, 2, 3], 'wusir']
1.3.2 增(列表)
- append:增加到最后
范例1
li = ['alex','wusir','egon','女神','taibai']
li.append("日天")
li.append(1)
print(li)
执行结果
['alex', 'wusir', 'egon', '女神', 'taibai', '日天', 1]
- insert:按照索引去增加
范例
li = ['alex','wusir','egon','女神','taibai']
li.insert(4,"春哥") # 在女神后插入
print(li)
执行结果
['alex', 'wusir', 'egon', '女神', '春哥', 'taibai']
- extend:迭代的去增加
范例
li = ['alex','wusir','egon','女神','taibai']
li.extend("二哥")
print(li)
li.extend([1,2,3])
print(li)
执行结果
['alex', 'wusir', 'egon', '女神', 'taibai', '二', '哥']
['alex', 'wusir', 'egon', '女神', 'taibai', '二', '哥', 1, 2, 3]
4)应用范例(append):
模拟hr在原有列表中持续添加新成员
li = ['alex',[1,2,3],'wusir','egon','女神','taibai']
while 1:
username = input('>>>')
if username.strip().upper() == 'Q':
# strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
# upper() 方法将字符串中的小写字母转为大写字母。
break
else:
li.append(username)
print(li)
执行结果
>>>张三
>>>李四
>>>q
['alex', 'wusir', 'egon', '女神', 'taibai', '张三', '李四']
1.3.2 删(列表)
- pop
范例一:
li = ['taibai','alex','wusir','egon','女神']
li.pop() # 默认删除最后一个
print(li)
执行结果
['taibai', 'alex', 'wusir', 'egon']
范例二:
li = ['taibai','alex','wusir','egon','女神']
li.pop(1) # 指定位置删除
print(li)
print(li.pop(1)) # pop方式可显示返回值
执行结果
['taibai', 'wusir', 'egon', '女神']
wusir # 此为显示的返回值
- remove:按元素去删
li = ['taibai','alex','wusir','egon','女神']
li.remove("taibai")
print(li)
执行结果
['alex', 'wusir', 'egon', '女神']
- clear:清空。成为空列表
范例
li = ['taibai','alex','wusir','egon','女神']
li.clear()
print(li)
执行结果
[]
- del
范例一:
li = ['taibai','alex','wusir','egon','女神']
del li[2:] # 按位置删,删除第三个开始到最后
print(li)
执行结果
['taibai', 'alex']
范例二:
li = ['taibai','alex','wusir','egon','女神']
del li[0:2] # 删除前两个
print(li)
执行结果
['wusir', 'egon', '女神']
范例三:
li = ['taibai','alex','wusir','egon','女神']
del li # 删除整个列表
print(li) # 列表被删,此命令将会报错
1.3.3 改(列表)
范例一:
li = ['taibai','alex','wusir','egon','女神']
li[0] = '神仙' # 指定索引位置改
print(li)
li[0] = [1,2,3] # 改为内嵌列表
print(li)
执行结果
['神仙', 'alex', 'wusir', 'egon', '女神']
[[1, 2, 3], 'alex', 'wusir', 'egon', '女神']
范例二:
li = ['taibai','alex','wusir','egon','女神']
# 切片方式
li[0:2] = '张果老'
print(li)
li[0:3] = [1,2,3,'春哥','咸鱼哥']
print(li)
执行结果
['张', '果', '老', 'wusir', 'egon', '女神']
[1, 2, 3, '春哥', '咸鱼哥', 'wusir', 'egon', '女神']
1.3.3 查(列表)
范例一:for循环
li = ['taibai','alex','wusir','egon','女神']
for i in li:
print(i)
执行结果
taibai
alex
wusir
egon
女神
范例二:索引方式
li = ['taibai','alex','wusir','egon','女神']
print(li[0:2]) # 找列表前两位
执行结果
['taibai', 'alex']
1.3.4 列表增删改查的综合应用
- lis = [11,22,33,44,55],将改列表的奇数位的元素删除
(列表不能在循环中删除,否则会报错)
范例1:
lis = [11,22,33,44,55]
lis = lis[::2]
print(lis)
执行结果
[11, 33, 55]
范例2:
lis = [11,22,33,44,55]
li = []
for i in lis:
if lis.index(i) % 2 == 0:
li.append(i)
lis = li
print(lis)
执行结果
[11, 33, 55]
范例3:
lis = [11,22,33,44,55]
for i in range(len(lis)-1,-1,-1):
if i % 2 == 1:
#print(i)
del lis[i]
#print(lis)
print(lis)
执行结果
[11, 33, 55]
1.3.4 列表的公共操作方法
- len() 方法
len() 方法返回列表元素个数。
范例:
li = ['taibai','alex','wusir','egon','女神']
l = len(li)
print(l)
执行结果
5
- count() 方法
count() 方法用于统计某个元素在列表中出现的次数。
范例:
li = ['taibai','alex','wusir','egon','女神']
num = li.count('taibai')
print(num)
执行结果
1
- index() 方法
index() 函数用于从列表中找出某个值第一个匹配项的索引位置。列表中没有find()方法
范例:
li = ['taibai','alex','wusir','egon','女神']
print(li.index('wusir')) # 列表没有find
执行结果
2
- sort() 方法
sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
范例1:正向排序
li = [1,5,4,7,6,2,3]
li.sort()
print(li)
执行结果
[1, 2, 3, 4, 5, 6, 7]
范例2:反向排序
li = [1,5,4,7,6,2,3]
li.sort(reverse=True)
print(li)
执行结果
[7, 6, 5, 4, 3, 2, 1]
- reverse() 方法
reverse() 函数用于反向列表中元素。
li = [1,5,4,7,6,2,3]
li.reverse()
print(li)
执行结果
[3, 2, 6, 7, 4, 5, 1]
1.3.5 列表的嵌套
范例1:直接改某个元素
li = ['taibai','何仙姑','苑昊',['alex','egon',89],23]
print(li[1][1]) # 只显示何仙姑的仙
执行结果
仙
例子2:将首字母改为大写
li = ['taibai','何仙姑','苑昊',['alex','egon',89],23]
# 方法一
# 找到taibai,并将首字母改为大写
name = li[0].capitalize()
# capitalize()将字符串的第一个字母变成大写,其他字母变小写。
print(name)
# 再将结果放入列表,将之前的taibai替换掉
li[0] = name
print(li)
# 方法二
# 将上述两条直接改为一条代码
li[0] = li[0].capitalize()
print(li)
执行结果
Taibai
['Taibai', '何仙姑', '苑昊', ['alex', 'egon', 89], 23]
['Taibai', '何仙姑', '苑昊', ['alex', 'egon', 89], 23]
例子3:
li = ['taibai','何仙姑','苑昊',['alex','egon',89],23]
# 将列表内的苑昊改为苑日天(方法一)
li[2] = '苑日天'
print(li)
# 将列表内的苑昊改为苑ritian(方法二)
li[2] = li[2].replace('日天','ritian')
# replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串)
print(li)
执行结果
['taibai', '何仙姑', '苑日天', ['alex', 'egon', 89], 23]
['taibai', '何仙姑', '苑ritian', ['alex', 'egon', 89], 23]
例子4:
# 将alex变为大写,并放入原位
li[3][0] = li[3][0].upper()
# upper() 方法将字符串中的小写字母转为大写字母。
print(li)
执行结果
['taibai', '何仙姑', '苑昊', ['ALEX', 'egon', 89], 23]
1.4 元组tuple
元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")
大白话:元组为只读列表,可循环查询,可切片。儿子不能改,孙子可能可以改。
1.4.1 元组的切片(查)
范例
tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon')
print(tu[3]) # 取出alex
print("******")
print(tu[0:4]) # 取出前4个元素
print("******")
for i in tu: # 循环列出所有元素
print(i)
执行结果
alex
******
(1, 2, 3, 'alex')
******
1
2
3
alex
[2, 3, 4, 'taibai']
egon
1.4.2 元组嵌套内的列表改
范例
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')
1.4.3 元组嵌套内的列表增
范例
tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon')
tu[4].append("stone")
print(tu)
执行结果
(1, 2, 3, 'alex', [2, 3, 4, 'taibai', 'stone'], 'egon')
1.5 其他常用方法
1.5.1 join()方法
join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
大白话:join可迭代对象都能用(字符串,列表,元组,集合)
- 字符串的范例
s = 'alex'
s1 = '_'.join(s)
print(s1)
执行结果
a_l_e_x
- 列表的例子1:
列表转换成字符串(list ---> str)
li = ['taibai','alex','wusir','egon','女神',]
s = '++++'.join(li)
s2 = ''.join(li)
print(s)
print(s2)
执行结果
taibai++++alex++++wusir++++egon++++女神
taibaialexwusiregon女神
- 列表的例子2:
列表转换成字符串(list ---> str)
names = ["rock","alex","monk"]
print("".join(names))
print(" ".join(names))
print(",".join(names))
print("-".join(names))
执行结果
rockalexmonk
rock alex monk
rock,alex,monk
rock-alex-monk
1.5.2 range()方法
range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
- 例子
for i in range(3,10):
print(i)
print("******")
for i in range(10):
print(i)
print("******")
for i in range(0,10,3):
print(i)
print("******")
for i in range(10,0,-2):
print(i)
print("******")
for i in range(10,-1,-2):
print(i)
执行结果
3
4
5
6
7
8
9
******
0
1
2
3
4
5
6
7
8
9
******
0
3
6
9
******
10
8
6
4
2
******
10
8
6
4
2
0
1.6 字典dict
字典的key必须施不可变数据类型,可哈希。
字典的value为任意数据类型。
1.6.1 增(字典)
- 直接添加:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
dic1['high'] = 185 #没有键值对,添加
print(dic1)
dic1['age'] = 16 #如果有键,则值覆盖
print(dic1)
执行结果
{'age': 18, 'name': 'jin', 'sex': 'male', 'high': 185}
{'age': 16, 'name': 'jin', 'sex': 'male', 'high': 185}
- setdefault()
setdefault() 有键值对,不做任何改变,没有才添加。
范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
dic1.setdefault('weight')
print(dic1)
dic2 = {'age': 18, 'name': 'jin', 'sex': 'male',}
dic2.setdefault('weight',150)
print(dic2)
dic2.setdefault('name','二哥')
print(dic2)
执行结果
{'age': 18, 'sex': 'male', 'name': 'jin', 'weight': None}
{'age': 18, 'sex': 'male', 'name': 'jin', 'weight': 150}
{'age': 18, 'sex': 'male', 'name': 'jin', 'weight': 150}
1.6.2 删(字典)
- pop()
字典 pop() 方法删除字典给定键 key 及对应的值,返回值为被删除的值。key 值必须给出。 否则,返回 default 值。
范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
dic1.pop('age') # 有返回值,按键去删除
print(dic1)
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
print(dic1.pop('二哥',None)) # 可设置返回值,用于删除一个可能不存在的键
print(dic1)
执行结果
{'name': 'jin', 'sex': 'male'}
None
{'name': 'jin', 'sex': 'male', 'age': 18}
- popitem()
字典 popitem() 方法随机返回并删除字典中的一对键和值。
如果字典已经为空,却调用了此方法,就报出KeyError异常。
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
print(dic1.popitem()) # 随机删除。有返回值,返回值是元组,元组里面是删除的键值。
print(dic1)
执行结果
('sex', 'male')
{'age': 18, 'name': 'jin'}
- 直接del
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
del dic1['name'] # 根据“键”删除(删除一个不存在的键时,会报错)
print(dic1)
del dic1 # 删除整个字典
print(dic1)
执行结果
{'sex': 'male', 'age': 18}
- clear()
字典(Dictionary) clear() 函数用于删除字典内所有元素。
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
dic1.clear() #清空字典
print(dic1)
执行结果
{}
1.6.3 改(字典)
- 直接改
范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
dic1['age'] = 16
print(dic1)
执行结果
{'name': 'jin', 'age': 16, 'sex': 'male'}
- update()
字典(Dictionary) update() 函数把字典dict2的键/值对更新到dict里。
范例:
dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic.update(dic2)
print(dic)
print(dic2)
执行结果
{'name': 'alex', 'sex': 'male', 'age': 18, 'weight': 75}
{'name': 'alex', 'weight': 75}
1.6.4 查(字典)
- 单独显示键,值,键值
dict.keys() 以列表返回一个字典所有的键
dict.values() 以列表返回字典中的所有值
dict.items() 以列表返回可遍历的(键, 值) 元组数组
范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
print(dic1.keys())
print(dic1.values())
print(dic1.items())
执行结果
dict_keys(['age', 'sex', 'name'])
dict_values([18, 'male', 'jin'])
dict_items([('age', 18), ('sex', 'male'), ('name', 'jin')])
- 显示键(for循环)
范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
for i in dic1.keys():
print(i)
执行结果
sex
age
name
- 显示值(for循环)
范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
for i in dic1.values():
print(i)
执行结果
male
18
jin
- 显示键值(for循环)
范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
for k,v in dic1.items():
print(k,v)
执行结果
sex male
age 18
name jin
- 字典(Dictionary) get()
字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。
范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
print(dic1.get('name'))
print(dic1.get('name1','没有这个键'))
执行结果
jin
没有这个键
- 直接根据键显示值
如果值不在字典中会显示报错信息
范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
v1 = dic1['name']
print(v1)
执行结果
jin
1.6.5 字典的嵌套
范例:
dic = {'name':['alex','wusir','taibai'],
'py9':{'time':'1213',
'learn_money':19800,
'addr':'CBD'},
'age':21
}
# 将age的值改为56
dic['age'] = 56
print(dic)
# 将name的值中加入ritian
print(dic['name'])
dic['name'].append('ritian')
print(dic)
# 将name中的wusir改为大写
dic['name'][1] = dic['name'][1].upper()
print(dic)
# 在py9中增加一组键值对_方法1
dic['py9']['female'] = 6
print(dic)
# 在py9中增加一组键值对_方法2
dic['py9'].setdefault("female","6")
print(dic)
执行结果
{'age': 56, 'py9': {'learn_money': 19800, 'time': '1213', 'addr': 'CBD'}, 'name': ['alex', 'wusir', 'taibai']}
['alex', 'wusir', 'taibai']
{'name': ['alex', 'wusir', 'taibai', 'ritian'], 'age': 21, 'py9': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD'}}
{'name': ['alex', 'WUSIR', 'taibai'], 'age': 21, 'py9': {'learn_money': 19800, 'time': '1213', 'addr': 'CBD'}}
{'py9': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD', 'female': 6}, 'name': ['alex', 'wusir', 'taibai'], 'age': 21}
1.6.6 字典的操作方法
- fromkeys()方法
字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
范例1:
dic = dict.fromkeys([1,2,3],'春哥')
print(dic)
执行结果
{1: '春哥', 2: '春哥', 3: '春哥'}
范例2:
dic = dict.fromkeys([1,2,3],[])
print(dic)
dic[1].append('袁姐')
print(dic)
dic[2].extend('二哥')
print(dic)
#参照常规的字典
dic = {1:[],2:[],3:[]}
print(dic)
dic[1].append('袁姐')
print(dic)
dic[2].extend('二哥') # extend()迭代添加
print(dic)
执行结果
{1: [], 2: [], 3: []}
{1: ['袁姐'], 2: ['袁姐'], 3: ['袁姐']}
{1: ['袁姐', '二', '哥'], 2: ['袁姐', '二', '哥'], 3: ['袁姐', '二', '哥']}
#参照常规的字典
{1: [], 2: [], 3: []}
{1: ['袁姐'], 2: [], 3: []}
{1: ['袁姐'], 2: ['二', '哥'], 3: []}
范例3:(没视频,不懂老师在表示啥)
dic = dict.fromkeys([1,2,3,],3)
print(dic)
dic[1] = 4
print(dic)
执行结果
{1: 3, 2: 3, 3: 3}
{1: 4, 2: 3, 3: 3}
1.7 其他小知识点
- 运算符is
is 比较,比较的是内存地址 id(内容)
数字、字符串:小数据池
数字的范围:-5 -- 256
字符串:1,不能有特殊字符
2,s20(字符串乘以数字20) 还是同一个地址,s21(字符串乘以数字21)以后都是两个地址
范例:
s1 = 20
s2 = 20
print(s1 is s2)
执行结果
True
另:list dict tuple set不会相同
范例
l1 = [1,]
l2 = [1,]
print(l1 is l2)
执行结果
False
- id()
id() 函数用于获取对象内存地址。
范例:
s1 = 2000
s2 = 2000
print(id(s1),id(s2))
执行结果
1858070492624 1858070492624
- enumerate() 函数
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
范例:
li = ['alex','taibai','wusir','egon']
for i in li:
print(li.index(i),i)
for index,i in enumerate(li,1):
print(index,i)
执行结果
0 alex
1 taibai
2 wusir
3 egon
1 alex
2 taibai
3 wusir
4 egon
1.8 解包(元组,列表,字典)
a,b,c = (1,2,3)
print(a)
print(b)
print(c)
a,b,c = ["a","b","c"]
print(a)
print(b)
print(c)
a,b = {"k1":"v1","k2":"v2"}
print(a)
print(b)
执行结果
1
2
3
a
b
c
k2
k1
1.9 数据类型的可变与不可变
可变数据类型(不可哈希):列表,字典,集合
不可变数据类型(可哈希):数字,字符串,元组,布尔值
字典的key必须施不可变数据类型,可哈希。
字典的value为任意数据类型。