文章目录
数据结构
列表
列表(也称序列)是 Python 中最基本的数据结构。
列表操作
import operator
list = ['海尔','海信','格力','美的','小米','奥克斯']
print(list)
# 查询
print(list[0])
print(list[2])
print(list[-1])
print(list[-2])
print(list[1:3])
print(list[0:-3])
# 增加
list.append('统帅')
print(list)
#修改
list[4] = 'vivo'
print(list)
#删除
del list[-3]
print(list)
#列表比较
a = [1,2]
b = [2,3]
print("operatro.eq(a,b):",operator.eq(a,b))
#列表推导式
# [表达式 for 变量 in 列表]
# [out_exp_res for out_exp in input_list]
# 或者
# [表达式 for 变量 in 列表 if 条件]
# [out_exp_res for out_exp in input_list if condition]
names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
new_names = [name.upper() for name in names if len(name) > 3]
print(new_names)
元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号 ( ),列表使用方括号 [ ]。
元组操作
tup = (1,2,3,4,5,6,7)
print(tup[1])
print(tup[0:3])
print(tup[-1])
print(tup[0:-3])
# 元组中的元素值不允许修改
#删除元组
del tup
#元组内置函数
# len(tuple) 元组长度
tuple1 = ('刘备','关羽','张飞','周瑜')
print(len(tuple1))
# max(tuple) 元组最大值
print(max(tuple1))
# min(tuple) 元组最小值
print(min(tuple1))
# tuple(iterable) 将可迭代的序列转换为元组
list = ['曹操','司马懿','夏侯惇']
print(tuple(list))
# 元组推导式
(expression for item in Sequence )
或
(expression for item in Sequence if conditional )
字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中
遍历字典
movie = {
'猫妖传':['黄轩','染谷将太'],
'无问东西':['章子怡','王力宏','祖峰'],
'超时空同居':['雷佳音','佟丽娅'],
}
name = input('你想查询哪个演员?')
for i in movie:
actors = movie[i]
#取出字典的值
if name in actors:
print(name+'出演了电影'+i)
for i in movie:
i表示key值
movie[i]表示vlaue值
# 遍历字典values
for value in DictName.values():
# value的名字可以自行另取
# DictName是要遍历的字典的名称
# .values():是固定的用法
# 遍历字典
for k,v in DictName.items():
#遍历字典的键值对,k对应键,v对应值
#k,v 的名字可以自己取,DictName是字典名
集合
集合(set)是一个无序的不重复元素序列。
集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。
可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数创建集合。
集合操作
# 集合基本操作
# 创建集合
set1 = {1,2,3,4} #直接使用大括号进行创建
set2 = set([5,6,7,8]) #使用set进行创建
# 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
print("set1:",set1)
print("set2:",set2)
# 添加元素1 s.add(x)
myset = set(("Google","Taobao","jindong"))
myset.add("IE")
print(myset)
# 添加元素2 s.update(x) x可以为列表、元组、字典
myset1 = set(("刘备","张飞","关羽"))
myset1.update({1,3})
print(myset1)
myset1.update([1,4],[5,6])
print(myset1)
# 移除元素1 s.remove(x)
myset2 = set(("曹操","曹丕","曹植"))
print(myset2)
myset2.remove("曹操")
print(myset2)
# myset2.remove("司马懿") #不存在会报错
# 移除元素2 s.discard(x) 不存在不会报错
myset2.discard("夏侯惇")
print(myset2)
# 移除元素3 s.pop() 随机移除
myset2.pop()
print(myset2)
#计算集合元素个数 len(s)
myset3 = set(("孙权","孙策","周瑜"))
print(len(myset3))
#清空集合 s.clear()
myset3.clear()
print(myset3)
# 判断元素是否在集合中存在 x in s
myset4 = set(("诸葛亮","马良","赵云"))
print("赵云" in myset4)
条件判断
if语句
语法格式
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
示例
var = 100
if var:
print("1 - if表达式条件为true")
print(var)
var = 0
if var:
print("2 - if表达式条件为true")
print(var)
else:
print("2 - if表达式条件为False")
print(var)
age = int(input("请输入你家狗狗的年龄:"))
print("")
if age <= 0:
print("你在逗我吧!")
elif age == 1:
print("相当于14岁的人")
elif age == 2:
print("相当于22岁的人")
elif age > 2:
human = 22 + (age - 2)*5
print("相当于人类年龄:",human)
input("点击enter键退出")
#猜字游戏
number = 7
guess = -1
print("数字猜谜游戏!")
while guess != number:
guess = int(input("请输入你猜的数字:"))
if guess == number:
print("恭喜,你猜对了!")
elif guess < number:
print("猜的数字太小了...")
elif guess > number:
print("猜的数字太大了...")
# if嵌套
num = int(input("请输入一个数字:"))
if num%2==0:
if num%3==0:
print("你输入的数字可以整除2和3")
else:
print("你输入的数字可以整除2,不可整除3")
else:
if num%3==0:
print("你输入的数字可以整除3,不可整除2")
else:
print("你输入的数字不可以整除2.也不可以整除3")
match…case
语法格式
match subject:
case <pattern_1>:
<action_1>
case <pattern_2>:
<action_2>
case <pattern_3>:
<action_3>
case _:
<action_wildcard>
示例
def http_error(status):
match status:
case 400:
return "Bad request"
case 401:
return "Not found"
case 418:
return "I'm a teapot"
case _: #作用通default
return "Something's wrong with the internet"
print(http_error(400))
一个case也可以设置多个匹配条件,条件使用|隔开
case 401|403|404:
return "Not allowed"
循环语句
while循环
格式
while 判断条件(condition):
执行语句(statements)...
while 循环使用 else 语句
while <expr>:
<statement(s)>
else:
<additional_statement(s)>
示例
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter+=1
print("1到%d之和为:%d"%(n,sum))
# 无线循环
var = 1
while var == 1:
num = int(input("输入一个有效数字:"))
print("你输入的数字是:",num)
print("Good bye")
# while后接else
count = 0
while count < 5:
print(count," 小于5")
count += 1
else:
print(count,"大于等于5")
# 简单语句
flag = 1
while (flag): print('欢迎访问菜鸟教程!')
print("Good bye!")
for语句
格式
for <variable> in <sequence>:
<statements>
else:
<statements>
for…else
for item in iterable:
# 循环主体
else:
# 循环结束后执行的代码
示例
sites = ["Baidu","Google","Runoob","Taobao"]
for site in sites:
print(site)
word = 'Baidu'
for letter in word:
print(letter)
for number in range(1,6):
print(number)
for x in range(6):
print(x)
else:
print("Finally finished!")
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
Python pass是空语句,是为了保持程序结构的完整性。
# break
for letter in 'Baidu':
if letter == 'd':
break
print('当前字母为:',letter)
var = 10
while var > 0:
print('当前变量值为:',var)
var = var -1
if var == 5:
break
print("Good bye!")
# continue
for letter in 'Runoob':
if letter == 'o':
continue
print('当前字母:',letter)
var = 10
while var > 0:
var = var - 1
if var == 5:
continue
print('当前变量值:',var)
print("Good bye!")
for n in range(2,10):
for x in range(2,n):
if n % x == 0:
print(n,'等于',x,'*',n//x)
break
else:
print(n,'是质数')
# pass语句
for letter in 'Runoob':
if letter == 'o':
pass
print('执行pass块')
print('当前字母:',letter)
print("Good bye!")
end语句
关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符
# end语句
a,b = 0,1
while b < 1000:
print(b,end=',')
a,b=b,a+b
推导式
列表推导式
[返回结果 循环条件 判断条件]
[表达式 for 变量 in 列表]
[out_exp_res for out_exp in input_list]
或者
[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
- out_exp_res:列表生成元素表达式,可以是有返回值的函数。
- for out_exp in input_list:迭代 input_list 将 out_exp 传入到 out_exp_res 表达式中。
- if condition:条件语句,可以过滤列表中不符合条件的值。
示例
# 列表推导式
names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
new_names = [name.upper() for name in names if len(name) > 3]
print(new_names)
multiples = [i for i in range(30) if i % 3 == 0]
print(multiples)
字典推导式
{返回结果 循环条件 判断条件}
{ key_expr: value_expr for value in collection }
或
{ key_expr: value_expr for value in collection if condition }
listDemo = ['Google','Runoob','Taobao']
newDict = {key:len(key) for key in listDemo}
print(newDict)
dict = {x:x**2 for x in (2,4,6)}
print(dict)
集合推导式
{返回结果 循环条件 判断条件}
{ expression for item in Sequence }
或
{ expression for item in Sequence if conditional }
示例
#集合推导式
newSet = {i**2 for i in (1,2,3)}
print(newSet)
a = {x for x in 'abracadabra' if x not in 'abc'}
print(a)
元组推导式
{返回结果 循环条件 判断条件}
(expression for item in Sequence )
或
(expression for item in Sequence if conditional )
示例
# 元组推导式
a = {x for x in range(1,10)}
print(a)
# 使用 tuple() 函数,可以直接将生成器对象转换成元组
a = tuple(a)
print(a)