【python】python进阶知识点

  • 字符串、数组、元组切片
    [start : end : step]
    start:起始位置索引(包含在结果中);默认值为0,表示从开头开始。
    end:结束位置索引(不包含在结果中);默认值为序列长度,表示到最后结束。
    step:步长;默认值为1,表示按递增顺序提取元素。负数表示按递减顺序提取元素。

str1 = "abcd"
# 字符串反向,输出"dcba"
str1_reverse = str1[::-1]

list1 = [1,2,3,4,5,6]
# [2, 3, 4, 5],下标从1~4,步长为1
list2 = list1[1:5]
# [2, 4],下标从1~4,步长为2
list3 = list1[1:5:2]

  • eval()函数用法
    函数参数:字符串
# 计算表达式
print(eval("1+2*3"))
# 把字符串当成python程序运行
print(eval("random.random()"))
# 字符串转成列表
print(type(eval("[1,2,3,4]")))
# 字符串转成字典
print(type(eval("{'name':'mkf','age':33}")))
  • map()函数用法
    函数参数1:函数对象
    函数参数2:可迭代对象
    返回值:map对象(也是可迭代对象)
    将可迭代对象中的每一个元素都作为参数传递给函数对象
def add(x):
    return x**2
# 返回map对象
y = map(add,[1,2,3,4]) 
# 转成列表
print(list(y)) # 输出[1,4,9,16]
  • 列表推导式
    语法:[表达式 for循环 if条件]
# 基础用法,mylist为[4, 9, 16, 25]
mylist = [i ** 2 for i in range(2, 6)]
# 结合if表达式,mylist为[16, 36, 64]
mylist = [i ** 2 for i in range(3, 10) if i % 2 == 0]
  • 字典推导式
    语法:{key:value for循环 if条件}
lst = ["lalalal", "heheheh", "huhuhuu"]
# mydict为{0: 'lalalal', 1: 'heheheh', 2: 'huhuhuu'}
mydict = {i: lst[i] for i in range(len(lst))}
  • 集合推导式
    语法:{key for循环 if条件}
lst = ["lalalal", "lalalal", "huhuhuu"]
# myset为{'huhuhuu', 'lalalal'}
myset = {item for item in lst}
  • 三项运算式
    语法:变量 = (真时返回的值) if 条件 else (假时返回的值)
score = 60
result = "超级球星" if score >= 30 else "普通球员"
print(result) # 输出"超级球星"
  • lambda匿名函数
    语法:lambda 函数参数:函数体
    返回值:调用匿名函数的返回值就是后面函数体的结果
# 基础用法
add = lambda a,b=99:a+b
print(add(1,2)) # 输出3
print(add(1))   # 输出100
# 结合三项运算式
get_even_old = lambda x:"old" if x%2 == 1 else "even"
print(get_even_old(10))
# 无参数表达式
import random
rand = lambda:random.random()
print(rand())
# lambda匿名函数作为函数的参数
y = map(lambda x:x**2,[1,2,3,4])
print(list(y))
  • 变量同时赋值
x,y,z = 100,200,300
a = b = c = 100
  • 变量值交换
x,y = 1,100
x,y = y,x
  • 展开变量
# 列表展开
mylist = [1,2,3]
newlist = [*mylist,4,5] # newlist为[1,2,3,4,5]
# 字典展开
mydic = {'name':"lalala",'age': 30}
newdic = {**mydic,'sex': '男'} # newdic为{'name': 'lalala', 'age': 30, 'sex': '男'}
  • 布尔值判断(0为假,其它均为真)
condition = -1
if condition:
    print("yes")
else:
    print("no")
# 返回"yes"
  • 短路判断
myprofile = {'name': 'lalala', 'age': 30}
# 如果前面值为假的话则不进行后面判断(不会出现没有'age'报错的情况)
if 'age' in myprofile and myprofile['age'] <= 40:
    print("40岁以下")
  • 组合运算符
x = 15
if 10 <= x <= 20:
    print("x在10~20之间")
  • 循环列表
mylist = [3, 6, 9, 12]
# 循环1
for val in mylist:
    print(val)
# 循环2
for index in range(len(mylist)):
    print(index, mylist[index])
# 循环3
for index,val in enumerate(mylist):
    print(index, val)
# 倒序循环1
for val in reversed(mylist):
    print(val)
# 倒序循环2
for index, val in enumerate(reversed(mylist)):
    print(index, val)
  • 循环字典
mydict = {'name': 'lalala', 'age': 30, 'sex': '男'}
# 循环1
for key in mydict:
    print(key, mydict[key])
# 循环2
for key, val in mydict.items():
    print(key, val)
  • 列表去重
mylist = ['a','b','a','c']
# 先转成集合set,再转成列表list
mylist = list(set(mylist))
  • 列表排序
mylist = [3, 1, 2]
# 升序排列
print(sorted(mylist))
# 降序排列
print(sorted(mylist, reverse=True))
mylist = [[3, 10], [1, 30], [2, 20]]
# 指定排序的key
print(sorted(mylist, key=lambda item: item[1]))
  • 列表中的字典排序
mylist = [
    {"name": "curry", "age": 32},
    {"name": "lebron", "age": 36},
    {"name": "harden", "age": 31}
]
print(sorted(mylist, key=lambda item: item["age"]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值