变量
定义变量:变量名 = 值
使用变量:
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)