python3实用编程技巧_6.python3实用编程技巧进阶(一)
1.1.如何在列表中根據條件篩選數據# 1.1.如何在列表中根據條件篩選數據
data = [-1, 2, 3, -4, 5]
#篩選出data列表中大于等于零的數據
#第一種方法,不推薦
res1 = []
for x in data:
if x >= 0:
res1.append(x)
print(res1)
#第二種用列表解析,推薦使用
res2 = [ x for x in data if x >= 0]
print(res2)
#第三種用filter函數
res3 = list(filter(lambda x : x>= 0,data))
print(res3)
1.2.如何在列表中根據條件篩選數據# 1.2.如何在列表中根據條件篩選數據
from random import randint
#創建學生字典,學號為1~20,分數為50~100隨機
d = {'student%d'% i: randint(50,100) for i in range(1,21)}
print(d)
#過濾出分數為90的學生字典
#第一種方法
d1 = {k:v for k,v in d.items() if v >= 90}
print(d1)
#第二種方法
d2 = dict(filter(lambda item:item[1] >= 90, d.items()))
print(d2)
1.3.如何在集合中根據條件篩選數據# 1.3.如何在集合中根據條件篩選數據
from random import randint
s = {randint(0,20) for _ in range(20)}
print(s)
#篩選出能被3整除的數
s1 = {x for x in s if x % 3 == 0}
print(s1)
1.4.如何為元祖中的每個元素命名,提高程序可讀性
如下元祖,通過函數判斷年齡和性別,但是這樣代碼可讀性很差,別人并不知道student[1],student[2]代表什么意思。如何解決呢def func(student):
if student[1] < 18 :
pass
if student[2] == 'male':
pass
student = ('derek',22,'male','111@qq.com')
func(student)
方案一:定義枚舉類型#1.4..如何為元祖中的每個元素命名,提高程序可讀性
def func(student):
if student[1] < 18 :
pass
if student[2] == 'male':
pass
s1 = ('derek',22,'male','111@qq.com')
#第一種:使用枚舉
from enum import IntEnum
class StudentEnum(IntEnum):
NAME = 0
AGE = 1
SEX = 2
EMAIL = 3
print(s1[StudentEnum.NAME])
print(s1[StudentEnum.AGE])
方案二:使用標準庫中collections.namedtuple替代內置tuple#1.4..如何為元祖中的每個元素命名,提高程序可讀性
def func(student):
if student[1] < 18 :
pass
if student[2] == 'male':
pass
s1 = ('derek',22,'male','111@qq.com')
#第一種:使用枚舉
from enum import IntEnum
class StudentEnum(IntEnum):
NAME = 0
AGE = 1
SEX = 2
EMAIL = 3
print(s1[StudentEnum.NAME])
print(s1[StudentEnum.AGE])
#第二種:使用標準庫中collections.namedtuple替代內置tuple
from collections import namedtuple
Student = namedtuple('student',['name','age','sex','email'])
s2 = Student('derek',22,'male','222@qq.com')
print(s2[0]) #derek
# 可以通過s2.name獲取姓名
print(s2.name) #derek
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python3实用编程技巧_6.python3实用编程技巧进阶(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现option上下移动_Django实
- 下一篇: channelsftp的put_JSch