02_Python基础二_全栈开发学习笔记

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 字符串的常用操作方法

  1. capitalize()方法
    capitalize() 将字符串的第一个字母变成大写,其他字母变小写。

范例

s = "alexWUsir"
s1 = s.capitalize()

执行结果

Alexwusir


  1. 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
输入成功


  1. swapcase() 方法
    swapcase() 方法用于对字符串的大小写字母进行转换

范例

s = "alexWUsir"
s3 = s.swapcase()

print(s3)

执行结果

ALEXwuSIR


  1. 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


  1. center()方法
    center() 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格。
    简易说明:居中,空白填充

范例

s = "alexWUsir"
s1 = s.center(20)
s2 = s.center(20,'~')

print(s1)
print(s2)

执行结果

     alexWUsir      
~~~~~alexWUsir~~~~~~


  1. 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


  1. 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


  1. 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


  1. 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


  1. 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('恭喜春哥发财')

执行结果

请输入名字:  春哥
恭喜春哥发财


  1. 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


  1. 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)

执行结果

来看待老王邻居复合大师街坊法好的撒见客户


  1. isalnum()方法
    isalnum() 方法检测字符串是否由字母和数字组成。

范例

print("22".isalnum())
print("22d".isalnum())
print("22d!".isalnum())

执行结果

True
True
False


  1. isalpha()方法
    isalpha() 方法检测字符串是否只由字母组成。

范例

print("22".isalpha())
print("dd".isalpha())

执行结果

False
True


  1. isdigit()方法
    isdigit() 方法检测字符串是否只由数字组成。

范例

print("33.33".isdigit())
print("3333".isdigit())

执行结果

False
True


  1. isspace() 方法
    isspace() 方法检测字符串是否只由空格组成。

范例

s = "  "
print(s.isspace())

s = ""
print(s.isspace())

s = "abcd"
print(s.isspace())

执行结果

True
False
False


1.2.4 字符串的公共操作方法

  1. len()方法(此为公共方法)
    len() 方法返回对象(字符、列表、元组等)长度或项目个数。

范例

s = "alex二哥"

l = len(s)
print(l)

执行结果

6


  1. 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 增(列表)

  1. append:增加到最后
    范例1
li = ['alex','wusir','egon','女神','taibai']

li.append("日天")
li.append(1)
print(li)

执行结果

['alex', 'wusir', 'egon', '女神', 'taibai', '日天', 1]


  1. insert:按照索引去增加
    范例
li = ['alex','wusir','egon','女神','taibai']

li.insert(4,"春哥")    # 在女神后插入
print(li)

执行结果

['alex', 'wusir', 'egon', '女神', '春哥', 'taibai']


  1. 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 删(列表)

  1. 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    # 此为显示的返回值


  1. remove:按元素去删
li = ['taibai','alex','wusir','egon','女神']

li.remove("taibai")
print(li)

执行结果

['alex', 'wusir', 'egon', '女神']


  1. clear:清空。成为空列表
    范例
li = ['taibai','alex','wusir','egon','女神']

li.clear()
print(li)

执行结果

[]


  1. 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 列表增删改查的综合应用

  1. 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 列表的公共操作方法

  1. len() 方法
    len() 方法返回列表元素个数。
    范例:
li = ['taibai','alex','wusir','egon','女神']

l = len(li)
print(l)

执行结果

5


  1. count() 方法
    count() 方法用于统计某个元素在列表中出现的次数。
    范例:
li = ['taibai','alex','wusir','egon','女神']

num = li.count('taibai')
print(num)

执行结果

1


  1. index() 方法
    index() 函数用于从列表中找出某个值第一个匹配项的索引位置。列表中没有find()方法
    范例:
li = ['taibai','alex','wusir','egon','女神']

print(li.index('wusir'))  # 列表没有find

执行结果

2


  1. 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]


  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可迭代对象都能用(字符串,列表,元组,集合)

  1. 字符串的范例
s = 'alex'
s1 = '_'.join(s)
print(s1)

执行结果

a_l_e_x


  1. 列表的例子1:列表转换成字符串(list ---> str)
li = ['taibai','alex','wusir','egon','女神',]
s = '++++'.join(li)
s2 = ''.join(li)

print(s)
print(s2)

执行结果

taibai++++alex++++wusir++++egon++++女神
taibaialexwusiregon女神


  1. 列表的例子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() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。

  1. 例子
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 增(字典)

  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}


  1. 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 删(字典)

  1. 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}


  1. popitem()
    字典 popitem() 方法随机返回并删除字典中的一对键和值。
    如果字典已经为空,却调用了此方法,就报出KeyError异常。
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}

print(dic1.popitem())  # 随机删除。有返回值,返回值是元组,元组里面是删除的键值。

print(dic1)

执行结果

('sex', 'male')
{'age': 18, 'name': 'jin'}


  1. 直接del
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}

del dic1['name']    # 根据“键”删除(删除一个不存在的键时,会报错)
print(dic1)

del dic1    # 删除整个字典
print(dic1)

执行结果

{'sex': 'male', 'age': 18}


  1. clear()
    字典(Dictionary) clear() 函数用于删除字典内所有元素。
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}

dic1.clear() #清空字典
print(dic1)

执行结果

{}


1.6.3 改(字典)

  1. 直接改
    范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}

dic1['age'] = 16
print(dic1)

执行结果

{'name': 'jin', 'age': 16, 'sex': 'male'}


  1. 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 查(字典)

  1. 单独显示键,值,键值
    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')])


  1. 显示键(for循环)
    范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
for i in dic1.keys():
    print(i)

执行结果

sex
age
name


  1. 显示值(for循环)
    范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}

for i in dic1.values():
    print(i)

执行结果

male
18
jin


  1. 显示键值(for循环)
    范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}

for k,v in dic1.items():
    print(k,v)

执行结果

sex male
age 18
name jin


  1. 字典(Dictionary) get()
    字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。
    范例:
dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}

print(dic1.get('name'))
print(dic1.get('name1','没有这个键'))

执行结果

jin
没有这个键


  1. 直接根据键显示值
    如果值不在字典中会显示报错信息
    范例:
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 字典的操作方法

  1. 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 其他小知识点

  1. 运算符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


  1. id()
    id() 函数用于获取对象内存地址。

范例:

s1 = 2000
s2 = 2000

print(id(s1),id(s2))

执行结果

1858070492624 1858070492624
  1. 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为任意数据类型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,782评论 2 16
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,719评论 0 10
  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,916评论 17 410
  • ——人生想开挂,需要读很多的书。 你好,我是贺州樊登书店江江店长,今天是我在樊登读书的第403天(9月22日),也...
    jcl小江江阅读 559评论 3 8
  • 最近发生一堆闹心事情,家庭情绪大爆炸,参与其中的人都自带炮竹自动点爆功能。 爸爸嫌弃妈妈在十一奉献的事情上不纪念神...
    圣灵白鸽阅读 143评论 1 1