【Python】杂记

用字典映射代替switch case语句

字典代替switch

switch(day)
{
    case 0:
        dayName="Sunday";
        break;
    case 1:
        dayName="Monday";
        break;
    case 2:
        dayName="Tuesday";
        break;
    default:
        dayName="Unknwon"
}
day=0
switcher={0:'Sunday',1:'Monday',2:'Tuesday'}
 # get方法检查字典的键,若不存在调用第二个参数
day_name=switcher.get(day,'Unknown')   
print(day_name)

如果case语句中下不是简单的语句,而是函数

day=0
def Get_Sunday():
    return "Sunday"
def Get_Monday():
    return "Monday"
def Get_Tuesday():
    return "Tuesday"
def Get_default():
    return "Unknown"
switcher={0:Get_Sunday,1:Get_Monday,2:Get_Tuesday}
day_name=switcher.get(day,Get_default)()  # 当调用的值为方法时,在get方法后面加(),并且使第二个参数也为方法
print(day_name)
Sunday

当调用的值为方法时,在get方法后面加(),并且使第二个参数也为方法

列表推导式

将a=[1,2,3,4,5]列表中的每个元素平方后生成新的列表
法一:map函数

a=[1,2,3,4,5]
result=map(lambda i :i*i,a)
print(list(result))

法二:列表推导式

  • 建立一个新列表接收
  • 新列表中用for循环遍历源列表的值
  • for循环前添加更改的条件,中间用空格隔开即可
a=[1,2,3,4,5]
b=[i*i for i in a]
print(b)
[1, 4, 9, 16, 25]

i^2 等价于 i2
i^3 等价于 i
3

使用条件: 对源列表中有条件的筛选元素进行更改
对大于3的元素进行平方处理
列表推导式:在for循环后添加if条件即可

a=[1,2,3,4,5]
b=[i*i for i in a if i>3]
print(b)
[16,25]

map方法:map与filter过滤结合

集合,字典,元组都可以被推导,只需把[]根据新的集合,字典,元组更改

字典列表推导式

需要通过for循环遍历字典

students={'喜小乐':18,'石敢当':20,'横小五':15}

b=[key for key,values in students.items()]   # 遍历字典需要两个变量
print(b)  # 提取出字典中的键到列表中

若要得到一个元组,只能返回一种key或value,得到的是一个对象

只能通过for循环遍历打印得到全部的键或值

students={'喜小乐':18,'石敢当':20,'横小五':15}

b=(key for key,values in students.items())   # 得到一个元组

for i in b:   # for循环得到全部键
    print(i)
喜小乐
石敢当
横小五

None

None的值和类型
不等于 空字符串
不等于 空列表
不等于 False

Python中None本身是一个对象

判空操作

if not a:
    a=None
    a=' '
    a=[]
    a=False
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值