高级用法
1 推导式
推导式 comprehensions(又称解析式):是 Python 中很强大的、很受欢迎的特性,具有语言简洁,速度快等优点。推导式包括:
1. 列表推导式
2. 字典推导式
3. 集合推导式
1.1 列表推导式
语法:
[表达式 for 变量 in 列表]
代表从列表中取出每个元素,然后在按照表达式运算,然后放在新的列表中
[表达式 for 变量 in 列表 if 条件]
代表从列表中取出满足条件的元素,然后在按照表达式运算,然后放在新的列表中
f
例1: 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
print([name.upper() for name in names if len(name)>3])
1.2 字典推导式
语法 { key: value for 变量 in 数据集 if 条件}
列如:
data ={n : randint(10,100) for n in range(10)}
print(data)
过滤value 大于90
data2 = { k:v for k,v in data.items() if v>=90}
print(data2)
1.3 集合推导式
语法 { 表达式 for value in 数据集 if 条件 }
列如:
用集合推导建字符串长度的集合
strings = ['a','is','with','if','file','exception']
{len(s) for s in strings} #有长度相同的会只留一个,这在实际上也非常有用
2 提高访问元组的可读性
student=('张三','22','北京市,海定区')
=原始访问====
#name
print(student[0])
#age
print(student[1])
#address
print(student[2])
#=================1 改变之后的访问======================
NAME,AGE,ADDRESS=range(3)
print(student[NAME])
print(student[AGE])
print(student[ADDRESS])
=========namedtuple 的方式 ===========
from collections import namedtuple
Student = namedtuple('Student',['name','age','address'])
s = Student('张三','22','北京市,海定区')
print(isinstance(s,tuple))
print(s.name)
print(s.age)
3 列表,元组 ,字典排序
import random
data =[random.randint(0,10) for n in range(10)]
print(data)
#================列表排序==========================
print(sorted(data))
#===================字典排序=================================
data ={n : random.randint(50,100) for n in 'abcdefghijk'}
print(data)
利用zip将字典转换成元组数据
data = sorted(zip(data.values(),data.keys()))
list -> dict
data2 = dict (data)
print( (data2))