Advanced usage
1
Comprehensions Comprehensions (also known as analytical): It is a very powerful and popular feature in Python, with the advantages of concise language and fast speed. The comprehensions include:
1. List comprehensions
2. Dictionary comprehensions
3. Set comprehensions
1.1 List comprehension
语法:
[表达式 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 Dictionary comprehension
语法 { key: value for 变量 in 数据集 if 条件}
列如:
data ={n : randint(10,100) for n in range(10)}
print(data)
Filter value greater than 90
data2 = { k:v for k,v in data.items() if v>=90}
print(data2)
1.3 Set comprehension
语法 { 表达式 for value in 数据集 if 条件 }
列如:
用集合推导建字符串长度的集合
strings = ['a','is','with','if','file','exception']
{len(s) for s in strings} #有长度相同的会只留一个,这在实际上也非常有用
2 提高访问元组的可读性
student=('张三','22','北京市,海定区')
=Original visit====
#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's way===========
from collections import namedtuple
Student = namedtuple('Student',['name','age','address'])
s = Student('张三','22','北京市,海定区')
print(isinstance(s,tuple))
print(s.name)
print(s.age)
3 List, tuple, dictionary sort
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)
Use zip to convert dictionary into tuple data
data = sorted(zip(data.values(),data.keys()))
list -> dict
data2 = dict (data)
print( (data2))