Python工程师全栈学习笔记

变量

定义变量:变量名 = 值

使用变量:

my_name = 'TOM'


print(my_name)

控制台打印 :TOM

数据类型

  • 数值  int(整形)  float(浮点型)
  • 布尔型  True(真) False(假)
  • 字符串   str
  • 列表      list
  • 元组      tuple
  • 集合      set
  • 字典      dict
# type() 检测数据类型的方法
a = 1
print(type(a))  #<class 'int'>

b=1.1
print(type(b))  #<class 'float'>

c = True
print(type(c))  #<class 'bool'>

d = '12345'
print(type(d))  #<class 'str'>

e = [10,20,30]
print(type(e))  #<class 'list'>

f = (10,20,30)
print(type(f))  #<class 'tuple'>

h = {10,20,30}
print(type(h))  #<class 'set'>

g = {'name':'TOM','age':18 }
print(type(g))  #<class 'dict'>

输出

格式化符号 

格式符号 转换
%s 字符串
%d  有符号的十进制整数
%f 浮点数
%c 字符
%u 无符号十进制整数
%o 八进制整数
%x 十六进制整数(小写x)
%X 十六进制整数(大写X)
%e 科学计数法(小写‘e’)
%E 科学计数法(大写‘E’)
%g %f和%e的简写
%G %F和%E的简写

技巧:

  • %06d,表示输出的整数显示位数,不足以0补全,超出当前位数则原样输出
  • %.2f,表示小数点后显示的小数位数
age = 18
name = 'TOM'
weight = 75.5
student_id = 1

# 我的名字是TOM
print('我的名字是%s' % name)
#我的学号是0001
print('我的学号是%4d' % student_id)
# 我的体重是75.5公斤
print('我的体重是%.2f公斤' % weight)
# 我的名字是TOM,今年18岁了
print('我的体重是%s,今年%d'% (name,age))
# 我的名字是TOM,今年19岁了
print('我的体重是%s,今年%d'% (name,age+1))
# 我的名字是TOM,明年19岁了
print(f'我的体重是{name},明年{age+1}')

转义字符:\n(换行)  \t(制表符相当于按了一下tab键) 

结束符:

print("内容")
print("内容1",end="")
print("内容2",end="\n")
print("内容3")

结果:

内容
内容1内容2
内容3

输入 

password = input("请输入您的密码:")

print(f"您输入的密码为{password}")

print(type(password))

输入的默认结果为字符串

 运算符

算数运算符

运算符 描述 实列
+ 1+1输出结果为2
- 1-1输出结果为0
* 2*2输出结果为4
/ 10/2输出结果为5
// 整除 9//4输出结果为2
% 取余 9%4输出结果为1
** 指数 2**4输出结果为16,即2*2*2*2
() 小括号 小括号用来提高运算优先级,即(1+2)*3输出结果为9

赋值运算符 

运算符 描述 实例
= 赋值 将=右侧的结果赋值给等号左侧的变量

单个变量赋值

num = 1
print(num)

 多个变量赋值

num1,float1,str1=10,0.5,'hello world'

print(f'{num1},{float1},{str1}')

多变量赋值

a=b=10
print(a)
print(b)

结果如下:

 复合赋值运算符

运算符 描述 实例
+= 加法赋值运算符 c+=a等价c=c+a
-= 减法赋值运算符 c-=a等价于c=c-a
*= 乘法赋值运算符 c*=a等价于c=c*a
/= 除法赋值运算符 c/=a等价于c=c/a
//= 整形赋值运算符 c//=a等价于c=c//a
%= 取余赋值运算符 c%=a等价于c=c%a
**= 幂赋值运算符 c**=a等价于c=c**a

a = 100
a += 1
# 输出101 a=a+1 ,最终a=100+1
print(a)

b = 2
b *= 3
#输出6 b=b*3,最终b = 2*3
print(b)

c = 10
c += 1+2
# 输出13, 先算运算符右侧1 + 2 = 3, c += 3 , 推导出c = 10 + 3
print(c)

 结果:

比较运算符

运算符 描述 实例
== 判断相等,如果两个操作数的结果相等,则条件结果为真(True),否则条件结果为假(False) 如果a=3,b=3,则(a==b)为True
!= 不等于,如果两个操作数的结果不相等,则条件为真(True),否则条件结果为假(False) 如a=3,b=3,则(a==b)为True如a=1,b=3,则(a!=b)为True
> 运算符左侧操作数结果是否大于右侧操作数结果,如果大于,则条件为真,否则为假。 如a=7,b=3,则(a>b)为True
< 运算符左侧操作数结果是否小于右侧操作数结果,如果小于,则条件为真,否则为假 如a=7,b=3,则(a<b)为False
>= 运算符左侧操作数结果是否大于等于右侧操作数结果,如果大于,则条件为真,否则为假 如a=7,b=3,则(a<b)为False如a=3,b=3,则(a>=b)为True
<= 运算符左侧操作数结果是否小于等于右侧操作数结果,如果小于,则条件为真,否则为假 如a=3,b=3,则(a<=b)为True

a = 7
b = 5
print(a==b)
print(a != b)
print(a < b)
print(a > b)
print(a <= b)
print(a >= b)

结果:

 

 逻辑运算符

运算符 逻辑表达式 描述 实例
and x and  y 布尔”与“;如果x为False,x and y 返回False,否则它返回y的值 True and  False,返回False
or x or y 布尔”或“;如果x是True,它返回True,否则它返回y的值 False or  True,返回True。
not not x 布尔”非“;如果x为True,返回False,如果x为false,它返回True not True 返回False,not False 返回True

a = 1
b = 2
c = 3

print((a<b) and (b<c))   # True
print((a>b) and  (b<c))  #False
print((a>b) or (b<c))    # True
print(a>b)               #True

结果:

拓展

a = 0
b = 1
c = 2
# and 运算符,只要有一个值为0,则结果为0,否则结果为最后一个非0数字
print(a and b)   #0
print(b and a)   #0
print(b and c)   #2
print(c and b)   #1

# or运算符,只有所有值为0结果才为0,否则为第一个非0数字
print(a or b) #1
print(a or c) #2
print(b or c) #1

结果

转换数据类型

函数 说明
int(x) 将x转化为一个整数
float(x ) 将x转换为⼀个浮点数
complex(real [,imag ]) 创建⼀个复数,real为实部,imag为虚部
str(x ) 将对象 x 转换为字符串
repr(x) 将对象 x 转换为表达式字符串
eval(str ) ⽤来计算在字符串中的有效Python表达式,并返回⼀个对象
tuple(s ) 将序列 s 转换为⼀个元组
list(s ) 将序列 s 转换为⼀个列表
chr(x ) 将⼀个整数转换为⼀个Unicode字符
ord(x ) 将⼀个字符转换为它的ASCII整数值
hex(x ) 将⼀个整数转换为⼀个⼗六进制字符串
oct(x ) 将⼀个整数转换为⼀个⼋进制字符串
bin(x ) 将⼀个整数转换为⼀个⼆进制字符串

实验

# float() --转换成浮点型
num1 = 1
print(float(num1))
print(type(float(num1)))

# str()  --转换成字符串类型
num2 = 10
print(type(str(num2)))

# tuple() -- 将一个序列转换成元组
list1 = [10,20,30]
print(tuple(list1))
print(type(tuple(list1)))

# list() 将一个序列转换成列表
t1 = (100,200,300)
print(list(t1))

# eval() 将字符串中的数据转换成python表达式原本类型
str1 = '10'
str2 = '[1,2,3]'
str3 = '(1000,2000,3000)'
print(type(eval(str1)))
print(type(eval(str2)))
print(type(eval(str3)))

条件语句

if语法

if 条件:

   条件成⽴执⾏的代码1

   条件成⽴执⾏的代码2

实验

if True:
    print('条件成立执行的代码')

print('我是无论条件是否成立都要执行的代码')

案列:,输入用户年龄,如果用户年龄大于等于18岁,即成年,输出已经成年可以上网

age = input("请输入你的年龄:")

if int(age)>18:
    print("已经成年可以上网")

运行结果

if.....else......语法

if 条件:

   条件成⽴执⾏的代码1

   条件成⽴执⾏的代码2 

else:

    条件不成⽴执⾏的代码1

    条件不成⽴执⾏的代码2

实验

age = int(input("请输入您的年龄:"))

if age>=18:
    print(f'您的年龄是{age},已经成年,可以上网')
else:
    print(f'您的年龄是{age},未成年,请自行回家写作业')

print("系统关闭!")

结果

多重判断

if 条件1:

   条件1成⽴执⾏的代码1

   条件1成⽴执⾏的代码2 ......

elif 条件2:

   条件2成⽴执⾏的代码1

   条件2成⽴执⾏的代码2 ...... 

else:

    以上条件都不成⽴执⾏执⾏的代码

实验

age = int(input('请输入您的年龄:'))

if age < 18:
    print(f'您的年龄是{age},童工一枚')
elif 18 <= age <= 60:
    print(f"您的年龄是{age},合法工龄")
else:
    print(f"您的年龄是{age},可以退休")

结果

if嵌套

if 条件1:

   条件1成⽴执⾏的代码

  条件1成⽴执⾏的代码

  if 条件2:

      条件2成⽴执⾏的代码

      条件2成⽴执⾏的代码

实验

money = 1
seat = 0
if money == 1:
    print("土豪,不差钱,顺利上车")
    if seat == 1:
        print('有空座,可以坐下')
    else:
        print('没有空座,站等')
else:
    print('没钱,不能上车,追着公交车跑')

结果

应用:猜拳游戏

"""
提示:0-⽯头,1-剪⼑,2-布
1. 出拳
玩家输⼊出拳
电脑随机出拳
2. 判断输赢
玩家获胜
平局
电脑获胜
"""
# 导入random模块
import random

# 计算电脑出拳的随机
computer = random.randint(0,2)
print(computer)

player = int(input('请出拳: 0-石头,1-剪刀,2-布'))

print("",end='\n')
print(f'玩家输入{player}')

# 玩家胜利
if ((player == 0) and (computer == 1)) or ((player == 1) and (computer == 2)) or ((player == 2) and (computer == 0)):
    print("玩家获胜")

# 平局 玩家 == 电脑
elif player == computer:
    print("平局")
else:
    print("电脑获胜")

结果

三目运算符

条件成⽴执⾏的表达式 if 条件 else 条件不成⽴执⾏的表达式


a = 1
b = 2
c = a if a > b else b
print(c)

结果

循环

while语法

while 条件:

        条件成⽴重复执⾏的代码1

        条件成⽴重复执⾏的代码2

 案例1:计算1-100累加和


# 计算1-100累加和

i = 1
result = 0
while i <= 100:
    result += i
    i += 1

print(result)

案例二:计算1-100偶数累加和

# 计算1-100偶数累加和

i = 1

result = 0

while i <= 100:
    if i % 2 == 0:
        result += i
    i += 1
print(result)

break和continue

break和continue是循环中满⾜⼀定条件退出循环的两种不同⽅式。

break:是完全终止循环

continue:是结束当前循环,开始下一次循环

案例break:

i = 1

while i <= 5:
    if i == 4:
        print(f'吃饱了不吃了')
        break
    print(f'吃了第{i}个苹果')
    i += 1

案例:continue

i = 1

while i <= 5:
    if i == 3:
        print(f'⼤⾍⼦,第{i}个不吃了')
        i += 1
        continue
    print(f'吃了第{i}个苹果')
    i += 1

while循环嵌套

语法:

while 条件1:

       条件1成⽴执⾏的代码

       ......

       while 条件2:

              条件2成⽴执⾏的代码

               ......

j = 0
while j < 3:
    i = 0
    while i < 3:
        print('媳妇⼉,我错了')
        i += 1
    print('刷晚饭的碗')
    print('⼀套惩罚结束----------------')
    j += 1

应用一:打印星号

需求

*****

*****

*****

*****

*****

代码

j = 0
while j <= 4:
    i = 0
    while i <= 4:
        print('*', end='')
        i += 1
    print()
    j += 1

结果 

应用二:打印星号(三角形)

需求

*

**

***

****

*****

代码:

# 重复打印5⾏星星
# j表示⾏号
j = 0
while j <= 4:
    # ⼀⾏星星的打印
    i = 0
    # i表示每⾏⾥⾯星星的个数,这个数字要和⾏号相等所以i要和j联动
    while i <= j:
        print('*', end='')
        i += 1
    print()
    j += 1

结果

九九乘法表

# 重复打印9⾏表达式
j = 1
while j <= 9:
    # 打印⼀⾏⾥⾯的表达式 a * b = a*b
    i = 1
    while i <= j:
        print(f'{i}*{j}={j * i}', end='\t')
        i += 1
    print()
    j += 1

for循环

for 临时变量 in 序列:

      重复执⾏的代码1

      重复执⾏的代码2

      ......

代码

str1 = 'itheima'
for i in str1:
    print(i)

结果 

for循环中break使用

str1 = 'itheima'
for i in str1:
    if i == 'e':
        print('遇到e不打印')
        break
    print(i)

结果

for循环continue使用

str1 = 'itheima'
for i in str1:
    if i == 'e':
        print('遇到e不打印')
        continue
    print(i)

else

while....else

语法

while 条件:

       条件成⽴重复执⾏的代码

else:

      循环正常结束之后要执⾏的代码

示例

i = 1
while i <= 5:
    print('媳妇⼉,我错了')
    i += 1
else:
    print('媳妇原谅我了,真开⼼,哈哈哈哈')

结果

退出循环的方式

1.break

i = 1
while i <= 5:
    if i == 3:
        print('这遍说的不真诚')
        break
    print('媳妇⼉,我错了')
    i += 1
else:
    print('媳妇原谅我了,真开⼼,哈哈哈哈')

结果

结论:所谓else指的是循环正常结束之后要执⾏的代码,即如果是break终⽌循环的情况,else下⽅缩进 的代码将不执⾏

2.continue

i = 1
while i <= 5:
    if i == 3:
        print('这遍说的不真诚')
        i += 1
        continue
    print('媳妇⼉,我错了')
    i += 1
else:
    print('媳妇原谅我了,真开⼼,哈哈哈哈')

结果

结论:因为continue是退出当前⼀次循环,继续下⼀次循环,所以该循环在continue控制下是可以正常 结束的,当循环结束后,则执⾏了else缩进的代码

for....else

for 临时变量 in 序列:

        重复执⾏的代码 ...

else:

        循环正常结束之后要执⾏的代码

str1 = 'itheima'
for i in str1:
    print(i)
else:
    print('循环正常结束之后执⾏的代码')

退出循环的方式

1.break终止循环

str1 = 'itheima'
for i in str1:
    if i == 'e':
        print('遇到e不打印')
        break
    print(i)
else:
    print('循环正常结束之后执⾏的代码')

结论:没有执⾏else缩进的代码。

2.continue控制循环

str1 = 'itheima'
for i in str1:
    if i == 'e':
        print('遇到e不打印')
        continue
    print(i)
else:
    print('循环正常结束之后执⾏的代码')

结论:因为continue是退出当前⼀次循环,继续下⼀次循环,所以该循环在continue控制下是可以正常 结束的,当循环结束后,则执⾏了else缩进的代码。

字符串

一对引号字符串:

name1 = 'Tom'

name2 = "Rose"

三引号字符串

name3 = ''' Tom '''

name4 = """ Rose """

a = ''' i am Tom, nice to meet you! '''

b = """ i am Rose, 
        nice to meet you! """

注意:三引号形式的字符串⽀持换⾏

如果创建⼀个字符串 I'm Tom ?

c = "I'm Tom"
d = 'I\'m Tom

下标

“下标” ⼜叫 “索引” ,就是编号。⽐如⽕⻋座位号,座位号的作⽤:按照编号快速找到对应的座位。同 理,下标的作⽤即是通过下标快速找到对应的数据。

name = "abcdef"
print(name[1])
print(name[0])
print(name[2])

切片

切⽚是指对操作的对象截取其中⼀部分的操作。字符串、列表、元组都⽀持切⽚操作。

序列[开始位置下标:结束位置下标:步⻓]

1. 不包含结束位置下标对应的数据, 正负整数均可;

2. 步⻓是选取间隔,正负整数均可,默认步⻓为1。

name = "abcdefg"
print(name[2:5:1]) # cde
print(name[2:5]) # cde
print(name[:5]) # abcde
print(name[1:]) # bcdefg
print(name[:]) # abcdefg
print(name[::2]) # aceg
print(name[:-1]) # abcdef, 负1表示倒数第⼀个数据
print(name[-4:-1]) # def
print(name[::-1]) # gfedcba

结果

常用操作方法

查找

find():检测某个⼦串是否包含在这个字符串中,如果在返回这个⼦串开始的位置下标,否则则返 回-1。

字符串序列.find(⼦串, 开始位置下标, 结束位置下标)

注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。

mystr = "hello world and itcast and itheima and Python"
print(mystr.find('and')) # 12
print(mystr.find('and', 15, 30)) # 23
print(mystr.find('ands')) # -1

结果

index():检测某个⼦串是否包含在这个字符串中,如果在返回这个⼦串开始的位置下标,否则则 报异常。

字符串序列.index(⼦串, 开始位置下标, 结束位置下标)

注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。

mystr = "hello world and itcast and itheima and Python"
print(mystr.index('and')) # 12
print(mystr.index('and', 15, 30)) # 23
print(mystr.index('ands')) # 报错

rfind(): 和find()功能相同,但查找⽅向为右侧开始。

rindex():和index()功能相同,但查找⽅向为右侧开始。

count():返回某个⼦串在字符串中出现的次数

字符串序列.count(⼦串, 开始位置下标, 结束位置下标)

注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找

mystr = "hello world and itcast and itheima and Python"
print(mystr.count('and')) # 3
print(mystr.count('ands')) # 0
print(mystr.count('and', 0, 20)) # 1

修改

replace():替换

字符串序列.replace(旧⼦串, 新⼦串, 替换次数)

注意:替换次数如果查出⼦串出现次数,则替换次数为该⼦串出现次数。

mystr = "hello world and itcast and itheima and Python"
# 结果:hello world he itcast he itheima he Python
print(mystr.replace('and', 'he'))
# 结果:hello world he itcast he itheima he Python
print(mystr.replace('and', 'he', 10))
# 结果:hello world and itcast and itheima and Python
print(mystr)

注意:数据按照是否能直接修改分为可变类型和不可变类型两种。字符串类型的数据修改的时候 不能改变原有字符串,属于不能直接修改数据的类型即是不可变类型。

split():按照指定字符分割字符串。

字符串序列.split(分割字符, num)

注意:num表示的是分割字符出现的次数,即将来返回数据个数为num+1个。

mystr = "hello world and itcast and itheima and Python"
# 结果:['hello world ', ' itcast ', ' itheima ', ' Python']
print(mystr.split('and'))
# 结果:['hello world ', ' itcast ', ' itheima and Python']
print(mystr.split('and', 2))
# 结果:['hello', 'world', 'and', 'itcast', 'and', 'itheima', 'and', 'Python']
print(mystr.split(' '))
# 结果:['hello', 'world', 'and itcast and itheima and Python']
print(mystr.split(' ', 2))

注意:如果分割字符是原有字符串中的⼦串,分割后则丢失该⼦串。

join():⽤⼀个字符或⼦串合并字符串,即是将多个字符串合并为⼀个新的字符串。

字符或⼦串.join(多字符串组成的序列)

list1 = ['chuan', 'zhi', 'bo', 'ke']
t1 = ('aa', 'b', 'cc', 'ddd')
# 结果:chuan_zhi_bo_ke
print('_'.join(list1))
# 结果:aa...b...cc...ddd
print('...'.join(t1))

capitalize():将字符串第⼀个字符转换成⼤写。

mystr = "hello world and itcast and itheima and Python"
# 结果:Hello world and itcast and itheima and python
print(mystr.capitalize())

注意:capitalize()函数转换后,只字符串第⼀个字符⼤写,其他的字符全都⼩写。

title():将字符串每个单词⾸字⺟转换成⼤写。

mystr = "hello world and itcast and itheima and Python"
# 结果:Hello World And Itcast And Itheima And Python
print(mystr.title())

lower():将字符串中⼤写转⼩写。

mystr = "hello world and itcast and itheima and Python"
# 结果:hello world and itcast and itheima and python
print(mystr.lower())

upper():将字符串中⼩写转⼤写。

mystr = "hello world and itcast and itheima and Python"
# 结果:HELLO WORLD AND ITCAST AND ITHEIMA AND PYTHON
print(mystr.upper())

lstrip():删除字符串左侧空⽩字符。

mystr = '    hello dasdaasda '
result = mystr.lstrip()
print(result)

rstrip():删除字符串右侧空⽩字符。

mystr = '    hello dasdaasda    '
print(mystr,end="")
print("121212")
result = mystr.rstrip()
print(result,end='')
print("121212")

strip():删除字符串两侧空⽩字符。

print('1',end="")
mystr = '    hello dasdaasda    '
print(mystr,end="")
print("1")

print(1,end='')
result = mystr.strip()
print(result,end='')
print("1")

ljust():返回⼀个原字符串左对⻬,并使⽤指定字符(默认空格)填充⾄对应⻓度 的新字符串。

字符串序列.ljust(⻓度, 填充字符)

mystr = 'hello'

mystr =  mystr.ljust(10,'.')

print(mystr)

rjust():返回⼀个原字符串右对⻬,并使⽤指定字符(默认空格)填充⾄对应⻓度 的新字符串,语法和 ljust()相同。

mystr = 'hello'

mystr =  mystr.rjust(10,'.')

print(mystr)

center():返回⼀个原字符串居中对⻬,并使⽤指定字符(默认空格)填充⾄对应⻓度 的新字符串,语 法和ljust()相同。

mystr = 'hello'

mystr =  mystr.center(10,'.')

print(mystr)

判断

startswith():检查字符串是否是以指定⼦串开头,是则返回 True,否则返回 False。如果设置开 始和结束位置下标,则在指定范围内检查。

字符串序列.startswith(⼦串, 开始位置下标, 结束位置下标)

mystr = 'hello world '

# 结果:True
print(mystr.startswith('hello'))
# 结果False
print(mystr.startswith('hello', 5, 20))

endswith()::检查字符串是否是以指定⼦串结尾,是则返回 True,否则返回 False。如果设置开 始和结束位置下标,则在指定范围内检查。

字符串序列.endswith(⼦串, 开始位置下标, 结束位置下标)

mystr = "hello world and itcast and itheima and Python"
# 结果:True
print(mystr.endswith('Python'))
# 结果:False
print(mystr.endswith('python'))
# 结果:False
print(mystr.endswith('Python', 2, 20))

isalpha():如果字符串⾄少有⼀个字符并且所有字符都是字⺟则返回 True, 否则返回 False。

mystr1 = 'hello'
mystr2 = 'hello12345'
# 结果:True
print(mystr1.isalpha())
# 结果:False
print(mystr2.isalpha())

isdigit():如果字符串只包含数字则返回 True 否则返回 False。

mystr1 = 'aaa12345'
mystr2 = '12345'
# 结果: False
print(mystr1.isdigit())
# 结果:False
print(mystr2.isdigit())

isalnum():如果字符串⾄少有⼀个字符并且所有字符都是字⺟或数字则返 回 True,否则返回 False。

mystr1 = 'aaa12345'
mystr2 = '12345-'
# 结果:True
print(mystr1.isalnum())
# 结果:False
print(mystr2.isalnum())

isspace():如果字符串中只包含空⽩,则返回 True,否则返回 False。

mystr1 = '1 2 3 4 5'
mystr2 = ' '
# 结果:False
print(mystr1.isspace())
# 结果:True
print(mystr2.isspace())

列表

列表的格式

[数据1, 数据2, 数据3, 数据4......]

列表可以⼀次性存储多个数据,且可以为不同数据类型。

列表的常用操作
查找
name_list = ['Tom', 'Lily', 'Rose']
print(name_list[0]) # Tom
print(name_list[1]) # Lily
print(name_list[2]) # Rose

函数

index():返回指定数据所在位置的下标 。

语法

列表序列.index(数据, 开始位置下标, 结束位置下标)

快速体验

name_list = ['Tom', 'Lily', 'Rose']
print(name_list.index('Lily',0,2))

注意:如果查找的数据不存在则报错。

count():统计指定数据在当前列表中出现的次数。

name_list = ['Tom', 'Lily', 'Rose']
print(name_list.count('Lily')) # 1

len():访问列表⻓度,即列表中数据的个数。

name_list = ['Tom', 'Lily', 'Rose']
print(len(name_list)) # 3

判断是否存在

in:判断指定数据在某个列表序列,如果在返回True,否则返回False

name_list = ['Tom', 'Lily', 'Rose']
# 结果:True
print('Lily' in name_list)
# 结果:False
print('Lilys' in name_list)

not in:判断指定数据不在某个列表序列,如果不在返回True,否则返回False

name_list = ['Tom', 'Lily', 'Rose']
# 结果:False
print('Lily' not in name_list)
# 结果:True
print('Lilys' not in name_list)

体验案例

需求:查找用户输入的名字是否存在

name_list = ['Tom', 'Lily', 'Rose']
name = input('请输⼊您要搜索的名字:')
if name in name_list:
 print(f'您输⼊的名字是{name}, 名字已经存在')
else:
 print(f'您输⼊的名字是{name}, 名字不存在')

增加

作⽤:增加指定数据到列表中。

append():列表结尾追加数

列表序列.append(数据)

name_list = ['Tom', 'Lily', 'Rose']
name_list.append('xiaoming')
# 结果:['Tom', 'Lily', 'Rose', 'xiaoming']
print(name_list)

列表追加数据的时候,直接在原列表⾥⾯追加了指定数据,即修改了原列表,故列表为可变类型 数据。

如果append()追加的数据是⼀个序列,则追加整个序列到列表

name_list = ['Tom', 'Lily', 'Rose']
name_list.append(['xiaoming', 'xiaohong'])
# 结果:['Tom', 'Lily', 'Rose', ['xiaoming', 'xiaohong']]
print(name_list)

extend():列表结尾追加数据,如果数据是⼀个序列,则将这个序列的数据逐⼀添加到列表。

列表序列.extend(数据)

单个数据

name_list = ['Tom', 'Lily', 'Rose']
name_list.extend('xiaoming')
# 结果:['Tom', 'Lily', 'Rose', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g']
print(name_list)

序列数据

name_list = ['Tom', 'Lily', 'Rose']
name_list.extend(['xiaoming', 'xiaohong'])
# 结果:['Tom', 'Lily', 'Rose', 'xiaoming', 'xiaohong']
print(name_list)

insert():指定位置新增数据。

列表序列.insert(位置下标, 数据)

name_list = ['Tom', 'Lily', 'Rose']
name_list.extend(['xiaoming', 'xiaohong'])
# 结果:['Tom', 'Lily', 'Rose', 'xiaoming', 'xiaohong']
print(name_list)

删除

del

del 目标

删除列表

name_list = ['Tom', 'Lily', 'Rose']
# 结果:报错提示:name 'name_list' is not defined
del name_list
print(name_list)

删除指定数据

name_list = ['Tom', 'Lily', 'Rose']
del name_list[0]
# 结果:['Lily', 'Rose']
print(name_list)

pop():删除指定下标的数据(默认为最后⼀个),并返回该数据。

列表序列.pop(下标)

name_list = ['Tom', 'Lily', 'Rose']
del_name = name_list.pop(1)
# 结果:Lily
print(del_name)
# 结果:['Tom', 'Rose']
print(name_list)

remove():移除列表中某个数据的第⼀个匹配项。

列表序列.remove(数据)

name_list = ['Tom', 'Lily', 'Rose']
name_list.remove('Rose')
# 结果:['Tom', 'Lily']
print(name_list)

clear():清空列表

name_list = ['Tom', 'Lily', 'Rose']
name_list.clear()
print(name_list) # 结果: []

修改

修改指定下标数据

name_list = ['Tom', 'Lily', 'Rose']
name_list[0] = 'aaa'
# 结果:['aaa', 'Lily', 'Rose']
print(name_list)

逆置:reverse()

num_list = [1, 5, 2, 3, 6, 8]
num_list.reverse()
# 结果:[8, 6, 3, 2, 5, 1]
print(num_list)

排序:sort()

列表序列.sort( key=None, reverse=False)

注意:reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)

num_list = [1, 5, 2, 3, 6, 8]
num_list.sort()
# 结果:[1, 2, 3, 5, 6, 8]
print(num_list)

复制

函数:copy()

name_list = ['Tom', 'Lily', 'Rose']
name_li2 = name_list.copy()
# 结果:['Tom', 'Lily', 'Rose']
print(name_li2)

# 浅拷贝

name_list =  ['Tom', 'Lily']

print(name_li2)

列表的循环遍历

while

name_list = ['Tom', 'Lily', 'Rose']
i = 0
while i < len(name_list):
 print(name_list[i])
 i += 1

for

name_list = ['Tom', 'Lily', 'Rose']
for i in name_list:
 print(i)

列表嵌套

所谓列表嵌套指的就是⼀个列表⾥⾯包含了其他的⼦列表。

应⽤场景:要存储班级⼀、⼆、三三个班级学⽣姓名,且每个班级的学⽣姓名在⼀个列表。

name_list = [['⼩明', '⼩红', '⼩绿'], ['Tom', 'Lily', 'Rose'], ['张三', '李四',
'王五']]
name_list = [['⼩明', '⼩红', '⼩绿'], ['Tom', 'Lily', 'Rose'], ['张三', '李四',
'王五']]

# 第⼀步:按下标查找到李四所在的列表
print(name_list[2])
# 第⼆步:从李四所在的列表⾥⾯,再按下标找到数据李四
print(name_list[2][1])

print(type(len(name_list)))

for i in range(len(name_list)):
    for a in range(len(name_list[i])):
        print(name_list[i][a])

元组

元组的应⽤场景

思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做?

答:列表?列表可以⼀次性存储多个数据,但是列表中的数据允许更改。

一个元组可以存储多个数据,元组内的数据是不能修改的。

定义元组

元组特点:定义元组使⽤⼩括号,且逗号隔开各个数据,数据可以是不同的数据类型。

# 多个数据元组
t1 = (10, 20, 30)
# 单个数据元组
t2 = (10,)

注意:如果定义的元组只有⼀个数据,那么这个数据后⾯也好添加逗号,否则数据类型为唯⼀的 这个数据的数据类型

t2 = (10,)
print(type(t2)) # tuple
t3 = (20)
print(type(t3)) # int
t4 = ('hello')
print(type(t4)) # str

元组的常见操作

元组数据不⽀持修改,只⽀持查找,具体如下:

按下标查找数据:

tuple = ('aa','bb','cc')
print(tuple[0])

index():查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index ⽅法相同。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.index('aa')) # 0

count():统计某个数据在当前元组出现的次数。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.count('bb')) # 2

len():统计元组中数据的个数。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(len(tuple1)) # 4

注意:元组内的直接数据如果修改则⽴即报

tuple1 = ('aa', 'bb', 'cc', 'bb')
tuple1[0] = 'aaa'

但是如果元组⾥⾯有列表,修改列表⾥⾯的数据则是⽀持的,故⾃觉很重要。

tuple2 = (10, 20, ['aa', 'bb', 'cc'], 50, 30)
print(tuple2[2]) # 访问到列表
# 结果:(10, 20, ['aaaaa', 'bb', 'cc'], 50, 30)
tuple2[2][0] = 'aaaaa'
print(tuple2)

字典

创建字典的语法

  • 符号为⼤括号
  • 数据为键值对形式出现
  • 各个键值对之间⽤逗号隔开
# 有数据字典
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
# 空字典
dict2 = {}
dict3 = dict()

注意:⼀般称冒号前⾯的为键(key),简称k;冒号后⾯的为值(value),简称v。

字典常见操作

写法:字典序列[key] = 值

注意:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。

 dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
 dict1['name'] = 'Rose'
 # 结果:{'name': 'Rose', 'age': 20, 'gender': '男'}
 print(dict1)
 dict1['id'] = 110
 # {'name': 'Rose', 'age': 20, 'gender': '男', 'id': 110}
 print(dict1)

注意:字典为可变类型

del() / del:删除字典或删除字典中指定键值对。

 dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
 del dict1['gender']
 # 结果:{'name': 'Tom', 'age': 20}
 print(dict1)

 

clear():清空字典

 dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
 dict1.clear()
 print(dict1)  # {}

写法: 字典序列[key] = 值

注意:如果key存在则修改这个key对应的值 ;如果key不存在则新增此键值对。

key值查找

 dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
 print(dict1['name'])  # Tom
 print(dict1['id'])  # 报错

如果当前查找的key存在,则返回对应的值;否则则报错。

get()

字典序列.get(key, 默认值)

注意:如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回 None。

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.get('name'))  # Tom
print(dict1.get('id', 110))  # 110
print(dict1.get('id'))  # None

keys()

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.keys())  # dict_keys(['name', 'age', 'gender'])

values()

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.values())  # dict_values(['Tom', 20, '男'])

items()

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.items())  # dict_items([('name', 'Tom'), ('age', 20), ('gender', '男')])

字典的循环遍历

遍历字典的key

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key in dict1.keys():
    print(key)

遍历字典的value

 dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
 for value in dict1.values():
    print(value)

遍历字典的元素

 dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
 for item in dict1.items():
     print(item)

遍历字典的键值对

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key, value in dict1.items():
    print(f'{key} = {value}')

集合

创建集合

创建集合使⽤用{}或set(), 但是如果要创建空集合只能使用set(),因为{}用来创建空字典。

s1 = {10, 20, 30, 40, 50}
print(s1)
s2 = {10, 30, 20, 10, 30, 40, 30, 50}
print(s2)
s3 = set('abcdefg')
print(s3)
s4 = set()
print(type(s4))  # set
s5 = {}
print(type(s5))  # dict

特点: 1. 集合可以去掉重复数据; 2. 集合数据是无序的,故不支持下标

集合常见操作方法

增加数据

add()

s1 = {10, 20}
s1.add(100)
s1.add(10)
print(s1)  # {100, 10, 20}

因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有数据的话,则不进行任何操 作。

update(), 追加的数据是序列列。

s1 = {10, 20}
# s1.update(100)  # 报错
s1.update([100, 200])
s1.update('abc')
print(s1)

删除数据

remove(),删除集合中的指定数据,如果数据不存在则报错。

s1 = {10, 20}
s1.remove(10)
print(s1)
s1.remove(10)  # 报错
print(s1)

discard(),删除集合中的指定数据,如果数据不存在也不会报错。

s1 = {10, 20}
s1.discard(10)
print(s1)
s1.discard(10)
print(s1)

pop(),随机删除集合中的某个数据,并返回这个数据。

 s1 = {10, 20, 30, 40, 50}
 del_num = s1.pop()
 print(del_num)
 print(s1)

查找数据
  • in:判断数据在集合序列
  • not in:判断数据不在集合序列
 s1 = {10, 20, 30, 40, 50}
 print(10 in s1)
 print(10 not in s1)

公共操作

运算符

运算符 描述 支持的容器类型
+ 合并 字符串,列表,元组
* 复制 字符串,列表,元组
in 元素是否存在 字符串,列表,元组,字典
not in  元素是否不存在 字符串,列表,元组,字典

+

 # 1. 字符串串
str1 = 'aa'
str2 = 'bb'
str3 = str1 + str2
print(str3)  # aabb
 # 2. 列列表
list1 = [1, 2]
list2 = [10, 20]
list3 = list1 + list2
print(list3)  # [1, 2, 10, 20]
 # 3. 元组
t1 = (1, 2)
t2 = (10, 20)
t3 = t1 + t2
print(t3)  # (10, 20, 100, 200)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人生如梦亦如幻唯心在

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值