自学python---集合高级语法

高级用法
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))

列表、元组、集合、字典的区别

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47580822/article/details/113726141