本文作者:林箖霖😉 本文原创,未经允许,禁止转载!
Python的输入输出函数
输入函数
-
输入函数从键盘接收到的是字符类型(str) a = input("输入第一个数:")
b = input("输入第二个数:")
print(a + b)
print(int(a) + int(b))
输出函数
转换说明符 | 解释 |
---|
%d、%i | 转换为带符号的十进制整数 | %o | 转换为带符号的八进制整数 | %x、%X | 转换为带符号的十六进制整数 | %e | 转化为科学计数法表示的浮点数(e 小写) | %E | 转化为科学计数法表示的浮点数(E 大写) | %f、%F | 转化为十进制浮点数 | %g | 智能选择使用 %f 或 %e 格式 | %G | 智能选择使用 %F 或 %E 格式 | %c | 格式化字符及其 ASCII 码 | %r | 使用 repr() 函数将表达式转换为字符串 | %s | 使用 str() 函数将表达式转换为字符串 |
指定对齐方式
标志 | 说明 |
---|
- | 指定左对齐 | + | 表示输出的数字总要带着符号;正数带+ ,负数带- 。 | 0 | 表示宽度不足时补充 0,而不是补充空格。 |
- 对于整数,指定左对齐时,在右边补 0 是没有效果的,因为这样会改变整数的值。
- 对于小数,以上三个标志可以同时存在。
- 对于字符串,只能使用 ’ - ’ 标志,因为符号对于字符串没有意义,而补 0 会改变字符串的值。
应用举例:
print("hello world")
print('hello world')
n = 1234567
str = 'ling'
print("%10d" % n)
print("%7s" % str)
f = 3.141592653
print("%8.3f" % f)
print("%08.3f" % f)
print("%+08.3f" % f)
n = 123456
print("%09d" % n)
print("%+9d" % n)
f = 140.5
print("%-+010f" % f)
s = "Hello"
print("%-10s." % s)
Python中的注释及转义字符
注释的使用方法
- 单行注释用符号 ’ # ’
- 多行注释用三引号 ( ’ ’ ’ 注释内容 ‘ ’ ‘ )( " " " 注释内容 " " " )
'''
多行注释
注释内容
'''
"""
多行注释
注释内容
"""
转义字符
转义字符 | 说明 |
---|
\n | 换行(new line) | \r | 回车(return) | \t | 水平制表(tab),一般相当于四个空格 | \b | 退格(backsapce) | \\ | 反斜线 | \’ | 单引号 | \" | 双引号 | \ | 在字符串行为的续行符 |
应用举例:
print("hello\b")
print("hello\r")
print("hello\
world")
print("hello\tworld")
print("hellooo\tworld")
print("\\\'\"")
Python中的数据类型及转换
- 在Python中,数据类型分为整型(int)、浮点型(float)、字符型(str)、布尔型(bool)
- 在Python中的变量赋值不需要先声明数据类型
字符类型赋值方法
str1 = 'abc'
str2 = "abcd"
print(str1, type(str1), str2, type(str2))
整型赋值方法
c = 10
e = 0b100
f = 0o100
g = 0x100
print(c, e, f, g)
数据类型转换
布尔型(bool)转其他类型
-
布尔型(bool)中,True代表int类型中的 1 ,False代表int类型中的 0 a = True
b = False
a = int(a)
b = int(b)
print(a, type(a), b, type(b))
a = str(a)
b = str(b)
print(a, type(a), b, type(b))
a = float(a)
b = float(b)
print(a, type(a), b, type(b))
其他类型转字符型(str)
-
所有类型都可以转化为str类型,通常使用str()函数,或者可以通过直接加 ’ ’ 的方法
c = 123
d = 123.3
e = True
print(str(c), type(str(c)), str(d), type(str(d)))
print(str(e), type(str(e)))
f = '1234'
print(f, type(f))
其他类型转整型(int)
-
文字类和小数类字符型(str)无法转化为整型(int)
str1 = '123'
str2 = '123.3'
str3 = '张三'
print(int(str1), type(int(str1)))
print(int(str2), type(int(str2)))
print(int(str3), type(int(str3)))
-
浮点型(float)转化为整型(int)的时候,小数位会被抹掉
f1 = 123.33
f2 = 55.0
print(int(f1), type(int(f1)))
print(int(f2), type(int(f2)))
其他类型转浮点型(float)
-
文字类字符串无法转化为float类型
str4 = '123'
str5 = '123.4'
str6 = 'zhang'
print(float(str4), type(float(str4)))
print(float(str5), type(float(str5)))
print(float(str6), type(float(str6)))
-
整型(int)转化为浮点型(float)会在其末尾加上 ’ .0 ’ # int类型转float类型
a = 2
b = 10
print(float(a), type(float(a))) # 2.0 <class 'float'>
print(float(b), type(float(b))) # 10.0 <class 'float'>
Python中的运算符
算术运算符
加法、减法、乘法
-
浮点数存储不确定性
-
使用浮点数进行计算时,可能会出现小数位数不确定的情况
print(1 + 1)
print(1.1 + 2.2)
print(1.1 + 2)
print(2 - 1)
print(2.2 - 3.1)
print(3.3 - 1)
print(2 * 5)
print(2.2 * 5.5)
print(5.5 * 3)
from decimal import Decimal
print(Decimal('1.1') + Decimal('2.2'))
print(Decimal('2.2') - Decimal('3.1'))
print(Decimal('2.2') * Decimal('5.5'))
除法( / )
-
就是普通除法,带小数运算
print(11 / 2)
print(-10 / 3)
from decimal import Decimal
print(Decimal('-10') / Decimal('3'))
c = 9 / 3
print(c, type(c))
求商( // )
-
在其他语言中,求商的符号是 / ,求余的符号是 % -
向左取整(数轴的左边,高斯函数),即11 // 2= 5.5 输出的是 5 -
如果被除数和除数一正一负,也同样适用,例如 (-10) // 3 = -4 print(-11//5)
print(11//-5)
print(-10//3)
求余( % )
-
求余公式 :余数 = 被除数 - 除数 * 商
print(10//4)
print(-10//4)
print(10//-4)
print(10%4)
print(-10%4)
print(10%-4)
幂运算( ** )
-
指数运算
print(2 ** 2)
print(2 ** 3)
d = 2 ** 6
print(d, type(d))
比较运算符
比较运算符 | 说明 |
---|
> | 大于,返回值True或False(比较value) | < | 小于,返回值True或False(比较value) | == | 等于,返回值True或False(比较value) | >= | 大等于,返回值True或False(比较value) | <= | 小等于,返回值True或False(比较value) | != | 不等于,返回值True或False(比较value) | is | 等于,返回值True或False(比较id) | is not | 不等于,返回值True或False(比较id) |
应用举例:
a = b = c = 10 # 链式赋值,其id为同一个,即指向同一个对象
print(a is b) # True,比较所指向对象的id
print(a == b) # True,比较所指向对象的value
# 两个列表的值一样,但是其对象的id不一样
list1 = [1, 2, 3, 4]
list2 = [1, 2, 3, 4]
# list1 = list2 = [1, 2, 3, 4] 链式赋值,这种情况下两个列表所指向的对象的id一样
print(list1 is list2) # False,比较两个列表的id
print(list1 is not list2) # True
print(list1 == list2) # True,比较两个列表的值
布尔运算符
布尔运算符 | 说明 |
---|
and | (a and b)与,返回值True或False | or | (a or b) 或,返回值True或False | not | (not a) 非,将True与False进行调换,返回值True或False |
应用举例:
c = 10
d = 20
print(c == 10 and d == 20)
print(c != 10 or d == 20)
print(not (c == 10))
位运算符
- 位运算符只能用来操作整型类型
- 其先将整型转化为二进制再进行位运算(8位)
位运算符 | 说明 |
---|
& | (a & b),按位进行与运算 | | | (a | b),按位进行或运算 | ^ | (a ^ b),按位进行异或运算 | ~ | (~ a),按位取反 | << | (a << b),按位左移 | >> | (a >> b),按位右移 |
应用举例:
# 位运算符
a1 = 4 # 00000100
a2 = 8 # 00001000
b = 1
# 将整数化为二进制,将其向左\右移动b位,超出的位抹掉,缺的位补0
print(a1 << b) # 8 将4转化为二进制(8位),再将其向左移一位
print(a2 >> b) # 4 同理,这个是右移一位,这里的b是代表左移或者右移的位数
print(a1 & a2) # 0 逐位相与
print(a1 | a2) # 12 逐位相或
赋值运算符
赋值运算符 | 说明 | 等价形式 |
---|
= | (x = y),基本赋值 | x = y | += | (x += y),加赋值 | x = x + y | -= | (x -= y),减赋值 | x = x - y | *= | (x *= y),乘赋值 | x = x * y | /= | (x = y),除赋值 | x = x / y | %= | (x %= y),取余数赋值 | x = x % y | **= | (x **= y),幂赋值 | x = x ** y | //= | (x //= y),取商赋值 | x = x // y | &= | (x &= y),按位与赋值 | x = x & y | |= | (x |= y),按位或赋值 | x = x | y | ^= | (x ^= y),按位异或赋值 | x= x ^ y | <<= | (x <<= y),左移赋值 | x = x << y,这里的y指左移的位数 | >>= | (x >>= y),右移赋值 | x = x >> y,这里的y指右移的位数 |
应用举例:
b1 = 2
b2 = 4
b1 += b2
print(b1)
运算符的优先级与结合性
优先级 | 运算符 | 描述 | 结合性 |
---|
1 | exp1,exp2 | 逗号运算符 | 左 | 2 | or | (布尔运算符),或 | 左 | 3 | and | (布尔运算符),与 | 左 | 4 | not x | (布尔运算符),非 | 右 | 5 | in,not in | (比较运算符),判断是否存在某一字符(成员测试) | 左 | 6 | is,is not | (比较运算符),判断id是否相同(同一性测试) | 左 | 7 | <,<=,>,>=,!=,== | (比较运算符),比较 | 左 | 8 | | | (位运算符),按位或 | 左 | 9 | ^ | (位运算符),按位异或 | 左 | 10 | & | (位运算符),按位与 | 右 | 11 | <<,>> | (位运算符),移位 | 左 | 12 | +,- | (算术运算符),加减 | 左 | 13 | *,/,//,% | (算术运算符),乘除求商求余 | 左 | 14 | +(正号),-(负号) | (符号运算符),正号,负号 | 右 | 15 | ~x | (布尔运算符),按位取反 | 右 | 16 | ** | (算术运算符),乘方 | 右 | 17 | ( ) | 小括号 | 无 |
Python中的组织结构
对象的布尔值
-
用bool()函数可以查看对象的布尔值
print(bool(''))
print(bool(""))
print(bool(0))
print(bool(0.0))
print(bool([]))
print(bool(list()))
print(bool(()))
print(bool(tuple()))
print(bool({}))
print(bool(dict()))
print(bool(set()))
分支结构
-
单分支(if) 写法举例(要注意缩进): a = 10
b = 20
if a >= b:
print(a)
-
双分支(if…else) 写法举例(要注意缩进): a = 10
b = 20
if a >= b:
print(a)
else:
print(b)
-
多分支(if…elif…else) 写法举例(要注意缩进): a = 10
b = 20
c = 30
if a > b:
print(a)
elif a > c:
print(b)
else:
print(c)
-
if语句的嵌套 写法举例(要注意缩进): a = 10
b = 20
c = 30
if a < b:
if a < c:
print("最小值为%d" % a)
else:
print("最小值为%d" % c)
else:
pass
-
条件表达式
写法举例: num1 = int(input('第一个整数:'))
num2 = int(input('第二个整数:'))
if num1 >= num2:
print(str(num1) + '大于' + str(num2))
else:
print(str(num1) + '小于' + str(num2))
print((str(num1) + '大于' + str(num2)) if num1 >= num2 else (str(num1) + '小于' + str(num2)))
pass空语句
-
空语句可以让程序正常运行,为未想好的代码留下位置 应用举例: d = 100
e = 200
if d > e:
pass
else:
pass
循环结构
-
range()函数用于生成一个整数序列,其返回值是一个迭代器对象;不管range对象表示的整数队列有多长,所有range对象占用的内存空间的都是相同的,因为仅需要存储start(开始)、stop(结束)、step(步长),只有当用到range对象时,才会去计算序列中的相关元素;in与not in判断帧数序列中是否存在(不存在指定的整数)
-
用法1(range(stop)) 用法举例: # range(stop)
r = range(10) # 到10结束,不包括10,默认从0开始,序列长度为:10-0=10
print(r) # range(0, 10)
# 查看range对象中的整数序列
print(list(r)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-
用法2(range(start,stop)) 用法举例:
g = range(1, 10)
print(g)
print(list(g))
-
用法3(range(start,stop,step)) 用法举例:
b = range(1, 10, 2)
print(b)
print(list(b))
print(10 in b)
print(3 in b)
E = range(100, 0, -1)
print(list(E))
-
while循环 写法举例: a = 1
sum = 0
while a < 5:
sum += a
a += 1
print(sum)
-
for…in循环
-
break语句
-
break语句用于跳出当前循环体;一般搭配 if 使用 应用举例: a = 0
while a < 3:
str = input("请输入密码:")
if str == "8888":
print('密码正确')
break # 当密码正确的时候,直接跳出while循环
else:
print("密码错误")
a += 1
应用举例②: for a in range(1, 11):
if a % 2 == 0:
print(a) # 只输出一次
break
-
continue语句
-
else的三种应用
-
if…else 应用举例: if a < 10:
pass
else:
pass
-
for…in…else 应用举例: # 九九乘法表
for a in range(1, 10):
for b in range(1, a + 1):
print(a, '*', b, '=', a * b, end='\t')
print()
else:
print("打印完毕") # 执行完第一个for...in之后,就执行这个else
-
while…else 应用举例: a = 0
while a < 3:
str = input("请输入密码:")
if str == "8888":
print('密码正确')
break
else:
print("密码错误")
a += 1
else:
print("三次密码都错误")
Python中的列表
-
Python中的列表和数组很相似,但是列表存储的对象的类型可以不一样,而数组存储的对象类型一样 -
列表的特点: 1)列表元素按顺序有序排序 2)索引映射唯一数据 3)列表可以存储重复数据 4)任意数据类型混存 5)根据需要动态分配和回收内存 6)列表是一个可变序列 -
列表在内存中的存储方式
列表的创建
-
使用中括号 [ ]
List = ['hello', 1, 90, 'world']
print(List)
print(List[2])
print(List[-1])
-
使用内置函数list()
List = list(['hello', 1, 90, 'world'])
print(List)
List2 = list('hello world')
print(List2)
List3 = list('123456')
print(List3)
List4 = list(range(1, 10, 2))
print(List4)
-
使用列表生成式
List = [i for i in range(1, 10, 1)]
print(List)
列表的查询
-
查询元素索引(使用 index()方法)
List = list(['hello', 1, 90, 'world', 'hello'])
print(List.index('hello'))
print(List.index(1))
-
获取单个元素(通过元素索引查询)
-
元素索引分为顺序和逆序,顺序的索引从0开始,到N-1结束;逆序的索引从 -1 开始
List = ['hello', 1, 90, 'world']
print(List)
print(List[2])
print(List[-1])
-
获取多个元素
- 在获取多个元素所使用到的切片操作时,其会在源列表的基础上产生一个新的列表
List = [10, 20, 30, 40, 50, 60]
list1 = List[1:5:]
print(list1)
list2 = List[:5:2]
print(list2)
list3 = List[1::1]
print(list3)
list4 = List[5::-1]
print(list4)
list5 = List[:1:-2]
print(list5)
list6 = List[5:0:]
print(list6)
-
查询该元素是否在列表中(in / not in) # 使用 in/not in 判断
List2 = [10, 20, 'hello', 'world']
print(10 in List2) # True
print(100 not in List2) # True
print("Hello" in List2) # False
print("hello" in List2) # True
列表的增删改
-
增加元素
-
使用 append()方法 # append()方法 在原列表的末尾添加一个元素
list1 = [10, 20, 'Hello']
list1.append(100)
print(list1) # [10, 20, 'Hello', 100]
list1.append("world")
print(list1) # [10, 20, 'Hello', 100, 'world']
lis = [10, 20]
list1.append(lis) # 将lis当作一个元素添加到列表尾部
print(list1) # [10, 20, 'Hello', 100, 'world', [10, 20]]
-
使用 extend()方法 # extend()方法 在列表的末尾添加至少一个元素
list2 = [10, 20, 'Hello']
lis = ['world', 100]
list2.extend(lis)
print(list2) # [10, 20, 'Hello', 'world', 100]
-
使用 insert()方法 # insert()方法 在列表的任意位置添加一个元素
list3 = [10, 20, 'Hello']
list3.insert(1, 'world') # 在索引为1的位置上添加'world'
print(list3) # [10, 'world', 20, 'Hello']
-
切片 # 切片在列表任意位置添加至少一个元素
list4 = [10, 20, 'Hello', "world1", 99]
lis = [1, "world2", 100]
# 顺序切片(步长为1)添加多少个元素都行
# list4[1:3]=lis #从索引号1开始,将索引号为1,2的元素删掉,并将lis中的元素放进去
# 输出为 [10, 1, 'world2', 100, 'world1', 99]
# list4[1::1]=lis #从索引号1开始,将后面的所有元素切掉,并且将切掉的元素更改为lis列表中的元素
# 输出为[10, 1, 'world2', 100]
# 间隔切片(步长不为1)的时候;逆序切片(步长为负数)时,切掉多少个元素,只能放多少个元素进去(不能多,不能少)
# 顺序切片只能顺序放入元素
# 逆序切片只能逆序放入元素
# list4[0:3:2]=lis
# 报错,因为lis列表里有三个元素,而切片只切掉了索引号为0,2的元素,位置不够
# list4[0::2]=lis #从索引号0开始,因为只把索引号为0,2,4的元素切掉,所以只能插入三个元素
# 输出为[1, 20, 'world2', 'world1', 100]
# list4[4::-2]=lis #从索引号4开始,逆序切片,把索引号为4,2,0的元素切掉
# 输出为[100, 20, 'world2', 'world1', 1],注意,逆序放入的!
# list4[:0:-1]=lis #从最后一个索引号开始,将索引号为5,4,3,2,1的元素切掉,但是由于是逆序,所以前面只能放四个元素
# 报错,因为lis列表里面只有三个元素,而切片切掉了四个元素
print(list4)
-
删除元素
-
使用 remove()方法
- 重复元素只删除第一个
- 元素不存在则抛出ValueError
# remove()方法
# 一次只移除一个元素
List1 = [10, 20, 30, 40, 50, 60, 30]
List1.remove(30)
print(List1) # [10, 20, 40, 50, 60, 30] 只移除了20后面的30
# 如果需要移除的元素不在列表里面,则会报错
List1.remove(100) # ValueError: list.remove(x): x not in list
-
使用 pop()方法
- 通过指定索引删除指定元素
- 若索引不存在,则抛出IndexError
- 若不指定索引,则默认删除最后一个元素
# pop()方法
# 删除指定元素
List2 = [10, 20, 30, 40, 30]
List2.pop(1) # [10, 30, 40, 30] 20的索引为1,移除了20
print(List2)
# 指定索引不存在
List2.pop(5) # IndexError: pop index out of range
List2.pop() # [10, 30, 40] 移除了最后一个30
print(List2)
-
使用 clear()方法
- 清楚列表所有元素
# clear()方法
# 清空列表所有元素
List4 = [1, 2, 3]
List4.clear()
print(List4) # []
-
使用 del语句
- 将列表对象删除
List5 = [1, 2, 3, 4]
del List5
print(List5)
-
切片
- 一次删除多个元素
- 只能删除连续索引号的元素,不能间隔删除元素
- 并不是真正的删除,只是把需要删除的元素用空列表替代
- step只能为1(默认值)
# 切片
# 删除至少一个元素
List3 = [10, 20, 30, 40, 60, 20]
# 连续删除元素
List3[1:3:1] = [] # 将需要删除的元素用空列表代替
print(List3) # [10, 40, 60, 20],将索引号为1和2的元素删除
# 间隔删除元素(不可行)
# 删除不了,会报错 ValueError: attempt to assign sequence of size 0 to extended slice of size 2
# List3[1:5:2] = []
-
修改元素
-
通过索引
- 一次修改一个元素
# 通过索引
List1 = [1, 2, 3, 50]
List1[2] = 30 # 将索引号为2的元素替换为30
print(List1) # [1, 2, 30, 50]
-
切片
- 一次修改多个元素
# 切片
List2 = [1, 30, 1, 50]
# 顺序切除(步长为1)
List2[1:3] = [100, 200, 300, 440] # 将切除的位置放入新元素
print(List2) # [1, 100, 200, 300, 440, 50]
列表的排序
-
使用sort()方法
-
在原列表上进行操作,不产生新的列表对象
list1 = [1, 3, 8, 10, 14]
list1.sort()
print(list1)
list1.sort(reverse=True)
print(list1)
-
使用内置函数:sorted()
-
排序会产生新的列表对象 # 调用内置函数sorted(),默认升序排序
list2 = [10, 11, 1, 0, 2, 4, 20]
new_list = sorted(list2)
print(list2) # [10, 11, 1, 0, 2, 4, 20]
print(new_list) # [0, 1, 2, 4, 10, 11, 20]
# 当reverse为True时,进行降序排序,若不指定reverse,则默认值为False
new_list = sorted(list2, reverse=True)
print(new_list) # [20, 11, 10, 4, 2, 1, 0]
Python中的字典
- 字典中的所有元素都是一个key-value对
- 字典与列表一样是一个可变序列(可进行增删改,但key为不可变对象)
- 以键值对的方式存储数据,字典是一个无序序列(存入的key通过hash变换)
- 字典是根据key查找value所在的位置
- 字典中不出现重复的key,但value可以重复,若在一次定义中出现两个相同的key,则最后出现的一个key类似于更新了前面相同的key的值
- 字典根据需要动态地伸缩,故其会浪费较大的内存,是一种空间换时间的数据结构
- 字典是元素可变、value可重复、key不可重复、元素无序排列的数据结构(可以进行增、删、改)
字典的创建
-
使用花括号 { } # 使用花括号
# {key:value,key:value}
score = {'张三': 100, '李四': 90, '王五': 80, '李六': '九十', '李六': '九十'}
score2 = {} # 空字典
print(score, type(score)) # {'张三': 100, '李四': 90, '王五': 80, '李六': '九十'} <class 'dict'>
-
使用内置函数dict() # 使用dict()函数
# dict(key=value)
people = dict(name='zhang', age=100, address='beijing')
print(people, type(people)) # {'name': 'zhang', 'age': 100, 'address': 'beijing'} <class 'dict'>
-
使用字典生成式
-
内置函数zip ( ) # 内置函数zip()
Fruits = ['apple', 'orange', 'banana']
Numbers = [100, 200, 101]
new_dict = zip(Fruits, Numbers)
print(list(new_dict)) # 要转化为列表才能输出,因为zip()返回的是“由这些元组组成的列表”
-
for…in… # 字典生成式
Fruits = ['apple', 'orange', 'banana']
Numbers = [100, 200, 101]
A = {Fruits: Numbers for Fruits, Numbers in zip(Fruits, Numbers)}
print(A)
# 如果两个字典中的元素不相等,则以短的字典为主
Tools = ['rule', 'desk', 'pen']
Prices = [100, 10, 20, 30, 102]
B = {Tools: Prices for Tools, Prices in zip(Tools, Prices)}
print(B) # {'rule': 100, 'desk': 10, 'pen': 20}
字典元素的获取
-
使用[ ] # 使用[]
score = {'张三': 100, '李四': 90, '王五': 80, '李六': '九十'}
print(score['张三']) # 通过key值查询相应的value值 100
# print(score['zhang']) # 查找的key值不存在,抛出 KeyError: 'zhang'
-
使用get( ) # 使用get(),get(key,self)
print(score.get('李四')) # 通过key值查询相应的value值 90
print(score.get('zhang', 99)) # 查找相应的键值不存在,返回默认值99
print(score.get('zhang')) # 查找相应的键值不存在,返回None
字典元素的判断
-
key的判断 # in / not in
score = {'张三': 100, '李四': 90, '王五': 80, '李六': '九十'}
print('zhang' in score) # False
print('张三' not in score) # False
字典元素的增删改
-
字典元素的增加 # 字典元素的添加
score = {'张三': 100, '李四': 90, '王五': 80, '李六': '九十'}
score['成七'] = 88
print(score) # {'张三': 100, '李四': 90, '王五': 80, '李六': '九十', '成七': 88}
-
字典元素的删除
-
del # 字典元素的删除
score = {'张三': 100, '李四': 90, '王五': 80, '李六': '九十'}
del score['张三'] # 通过指定key删除键值对
print(score) # {'李四': 90, '王五': 80, '李六': '九十'}
-
clear ( ) # 清空字典元素
score = {'张三': 100, '李四': 90, '王五': 80, '李六': '九十'}
score.clear()
print(score) # {}
-
字典元素的修改 # 字典元素的修改
score = {'张三': 100, '李四': 90, '王五': 80, '李六': '九十'}
score['成七'] = 400
print(score) # {'张三': 100, '李四': 90, '王五': 80, '李六': '九十', '成七': 400}
字典视图的获取
-
key ( ) # 获取字典中的所有key
score = {'张三': 100, '李四': 90, '王五': 80, '李六': 100}
print(score.keys()) # dict_keys(['张三', '李四', '王五', '李六'])
print(type(score.keys())) # <class 'dict_keys'>
# 将key转化成列表
print(list(score.keys())) # ['张三', '李四', '王五', '李六']
-
value ( )
score = {'张三': 100, '李四': 90, '王五': 80, '李六': '九十'}
print(score.values())
print(type(score.values()))
print(list(score.values()))
-
items ( )
score = {'张三': 100, '李四': 90, '王五': 80, '李六': 100}
print(score.items())
print(type(score.items()))
print(list(score.items()))
字典元素的遍历
# 字典元素的遍历
score = {'张三': 100, '李四': 90, '王五': 80, '李六': 100}
for i in score:
print(i) # 获取key
print(score[i]) # 获取values
print(score.get(i)) # 获取values
Python中的元组
-
元组是Python内置的数据结构之一,是一个不可变序列 -
元组是元素不可变、元素可重复、元素有序排列的数据结构(不可以进行增、删、改) -
将元组设计成不可变序列的好处:在多任务环境下,同时操作对象时不需要加锁 -
元组中存储的是对象的应用,如果元组中对象本身不可变,则不能在引用其他对象;如果元组中的对象可变,则可变对象的引用不允许改变,但是数据可以改变 # 元组是不可变序列
A1 = (10, [10, 20], 30)
# A1[1]=10 # TypeError: 'tuple' object does not support item assignment
# 但是可以修改列表[10,20]
A1[1].append(101)
print(A1) # (10, [10, 20, 101], 30)
元组的创建
-
使用 ( ) # 使用()
A = ('Python', 10, 'Hello', 'Wordl')
print(A, type(A)) # ('Python', 10, 'Hello', 'Wordl') <class 'tuple'>
# ()也可以省略
C = 'Hello', 'Worle', 100
print(C, type(C)) # ('Hello', 'Worle', 100) <class 'tuple'>
# 当元组中只有一个元素的时候,要在该元素后面添加逗号
D = ('Hello',)
F = 'HELLO',
E = ('World')
print(D, type(D)) # ('Hello',) <class 'tuple'>
print(E, type(E)) # World <class 'str'>
print(F, type(F)) # ('HELLO',) <class 'tuple'>
# 空元组
G = ()
H = tuple()
-
使用内置函数tuple ( ) # 使用内置函数tuple()
B = tuple(('Hello', 'World', 100))
print(B, type(B)) # ('Hello', 'World', 100) <class 'tuple'>
元组的遍历
-
使用for…in… # 元组的遍历
B1 = ('Hello', 'World', 10)
for i in B1:
print(i) # Hello World 10
-
使用索引 # 元组的遍历
C1 = (10, 20, 30)
print(C1[1]) # 20
Python中的集合
- 集合是Python提供的内置数据结构
- 集合是元素可变、元素不可重复、元素无序排列的数据结构(可以进行增、删、改)
- 集合是没有value的字典
- 集合定义和字典类似,也使用 { }
集合的创建
-
使用 { } # 使用 { }
A = {1, 2, 'Hello'}
# 体现集合是无序序列
print(A, type(A)) # {1, 2, 'Hello'} <class 'set'>
-
使用内置函数set ( ) # 内置函数set()
B = set({1, 'Hello'})
print(B, type(B)) # {1, 'Hello'} <class 'set'>
C = set(range(5))
print(C, type(C)) # {0, 1, 2, 3, 4} <class 'set'>
D = set([1, 2, 3, 4])
print(D, type(D)) # {1, 2, 3, 4} <class 'set'>
E = set(('hello', 20))
print(E, type(E)) # {'hello', 20} <class 'set'>
F = set('Python')
print(F, type(F)) # {'y', 'o', 'P', 'n', 'h', 't'} <class 'set'>
# 空集合
G1 = {} # 这个是定义空字典
G = set()
print(G, type(G)) # set() <class 'set'>
-
使用集合生成式
A = {i * i for i in range(1, 10)}
print(A)
集合的相关操作
-
集合元素的判断
A1 = {11, 22, 'Hello'}
print(11 in A1)
print('HELLO' in A1)
-
集合元素的增加
-
add ( )
B1 = {1, 2, 3}
B1.add(80)
print(B1)
-
update ( )
C1 = {1, 2, 3}
C1.update({22, 33})
C1.update([44, 55])
C1.update((66, 77))
print(C1)
-
集合元素的删除
-
remove ( ) # remove() 一次删除一个指定元素
D1 = {1, 2, 3}
D1.remove(1) # {2, 3}
print(D1)
# D1.remove(100) #KeyError: 100
-
discard ( ) # discard() 一次删除一个指定元素
E1 = {11, 22, 10}
E1.discard(11)
print(E1) # {10, 22}
E1.discard(100) # 移除不存在的元素不会报错
-
pop ( ) # pop() 一次只删除一个元素,该元素索引号为0
F1 = {11, 12, 13}
# F1.pop(11) #报错,pop()不可指定参数
print(F1) # {11, 12, 13}
F1.pop()
print(F1) # {12, 13}
F1.pop()
print(F1) # {13}
-
clear ( )
G1 = {11, 22}
print(G1)
G1.clear()
print(G1)
集合间的关系
-
是否相等 # 两个集合是否相等
A = {40, 10, 20, 30}
B = {30, 20, 10, 40}
print(A == B) # True
print(A != B) # False
-
A是否是B的子集
C = {11, 22, 33}
D = {33}
print(D.issubset(C))
-
A是否是B的超集 # A是否为B的超集
# 子集与超集的概念刚好相反
C = {11, 22, 33}
D = {33}
print(C.issuperset(D)) # True C是D的超集
-
是否没有交集
C = {11, 22, 33}
D = {33}
print(C.isdisjoint(D))
集合的数据操作
-
交集
C = {11, 22, 33}
D = {33}
print(C.intersection(D))
print(C & D)
print(C)
print(D)
-
并集
C = {11, 22, 33}
D = {33, 44}
print(C.union(D))
print(C | D)
-
差集
C = {11, 22, 33}
D = {33, 44}
print(C.difference(D))
print(C - D)
-
对称差集
C = {11, 22, 33}
D = {33, 44}
print(C.symmetric_difference(D))
print(C ^ D)
print(F1) # {13} ```
集合间的关系
-
是否相等 # 两个集合是否相等
A = {40, 10, 20, 30}
B = {30, 20, 10, 40}
print(A == B) # True
print(A != B) # False
-
A是否是B的子集
C = {11, 22, 33}
D = {33}
print(D.issubset(C))
-
A是否是B的超集 # A是否为B的超集
# 子集与超集的概念刚好相反
C = {11, 22, 33}
D = {33}
print(C.issuperset(D)) # True C是D的超集
-
是否没有交集
C = {11, 22, 33}
D = {33}
print(C.isdisjoint(D))
集合的数据操作
-
交集
C = {11, 22, 33}
D = {33}
print(C.intersection(D))
print(C & D)
print(C)
print(D)
-
并集
C = {11, 22, 33}
D = {33, 44}
print(C.union(D))
print(C | D)
-
差集
C = {11, 22, 33}
D = {33, 44}
print(C.difference(D))
print(C - D)
-
对称差集
C = {11, 22, 33}
D = {33, 44}
print(C.symmetric_difference(D))
print(C ^ D)
|