python基础知识(二)

数据结构

列表

列表(也称序列)是 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值