你需要改掉的Python开发习惯(三)

1、对于用if bool 和 if len做判断,其实是很多余的。

def function(x):
    if bool(x):
        pass

    if len(x) != 0:
        pass

可以直接用对x进行判断就行:

def function(x):
    if x:
        pass

2、使用range和len组合语句有时候很多余:

def function():
    a = [2, 4, 6]
    for i in range(len(a)):
        v = a[i]
        print(v) # v依次输出2,4,6

很多老程序员,对于容器的访问都是通过容器下标访问的,但是python其实可以直接去遍历:

def function():
    a = [2, 4, 6]
    for v in a:
    	print(v) # v依次输出2,4,6

如果你想获取容器下标和对应的值,也可以使用enumerate操作:

def function():
    a = [2, 4, 6]
    for i, v in enumerate(a):
    	print(i, v) 

再举个例子:

def function():
    a = [2, 4, 6]
    b = [3, 6, 9]
    for i in range(len(b)):
        v1 = a[i]
        v2 = b[i]
        print(v1, v2) 

这样写还是比较危险的,现在是a和b长度一样,如果b的长度比a大,程序会报错,但是用zip就可能会避免该事故:

def function():
    a = [2, 4, 6]
    b = [3, 6, 9, 8]
    for v1, v2 in zip(a, b):
        print(v1, v2)

上面的程序会输出:
2 3
4 6
6 9
如果你仍然需要索引,也可以用enumerate:

def function():
    a = [2, 4, 6]
    b = [3, 6, 9, 8]
    for i, (v1, v2) in enumerate(zip(a, b)):
        print(i, v1, v2)

3、遍历字典的键:

def function():
    d = {"a": 1, "b": 2, "c": 3}
    for key in d.keys():
        print(key) # 遍历输出a, b, c

其实你可以直接如下方式用,因为默认就带keys():

def function():
    d = {"a": 1, "b": 2, "c": 3}
    for key in d:
        print(key) # 遍历输出a, b, c

当然你也可以使用list,使代码更清晰一点:

def function():
    d = {"a": 1, "b": 2, "c": 3}
    for key in list(d.keys()):
        print(key) # 遍历输出a, b, c

此时其实keys()也是没必要存在的:

def function():
    d = {"a": 1, "b": 2, "c": 3}
    for key in list(d):
        print(key) # 遍历输出a, b, c

4、不知道字典项方法:

def function():
    d = {"a": 1, "b": 2, "c": 3}
    for key in d:
        value = d[key]
        print(value)

如果你不知道字典项,你需要获取每个键,再去通过键去获取值。但是其实你可以直接去获取键和值:

def function():
    d = {"a": 1, "b": 2, "c": 3}
    for key, value in d.items():
        print(key, value)

5、不使用元组解包:

def function():
    mytuple= 1, 2
    x = mytuple[0]
    y = mytuple[1]

但是其实你可以直接对tuple进行解包:

def function():
    mytuple = 1, 2
    x, y = mytuple
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值