升级 Python 代码的4种方法

欢迎关注 “小白玩转Python”,发现更多 “有趣”

引言

Python 的优点之一就是使工作变得容易。

另一件好处是 Python 中有许多隐藏的宝藏,它们可以使你的代码更简洁,更易于阅读和更易于编写。

在本文中,我们将介绍四种简单的方法来升级 Python,让我们从众多新手中脱颖而出!

1. 将 range(len())改为 enumerate()

有时候你可能需要迭代一个集合并跟踪您正在访问的索引。为此,许多人可能会在 range(len(collection)) 上进行迭代。

使用 enumerate() 函数是一种更优雅、更干净的方法。

枚举函数返回一个枚举对象,该对象存储每个项的索引和值。

这使你能够更好地跟踪其在集合中的位置,以及它当前的值。

让我们来看一个示例,用 range(len (collection))和 enumerate(collection)方法说明这一点:

# Define a collection, such as list:
names = ['Nik', 'Jane', 'Katie', 'Jim', 'Luke']


# Using the range(len(collection)) method, you'd write:
for i in range(len(names)):
    print(i, names[i])


# Using enumerate, you can define this by writing:
for idx, name in enumerate(names):
    print(idx, name)
    
# Both ways of doing this return:
# 0 Nik
# 1 Jane
# 2 Katie
# 3 Jim
# 4 Luke

另外,如果你希望枚举对象从0以外的地方开始,则可以简单地将起始值传递给start 参数。假设我们希望它从1开始。就可以简单地写:

# Define a collection, such as list:
names = ['Nik', 'Jane', 'Katie', 'Jim', 'Luke']


# Using enumerate, you can define this by writing:
for idx, name in enumerate(names, start=1):
    print(idx, name)
    
# This returns:
# 1 Nik
# 2 Jane
# 3 Katie
# 4 Jim
# 5 Luke

2.停止使用方括号获取字典项—使用 .get()

假设如下一个字典:

想得到 age 的值,你可能习惯了使用 nik[‘age’],虽然在这个实例中可以正常工作,但当值不存在的时候,就会出现错误。

例如,尝试访问一个不存在的值 ‘location’ 会引发 KeyError:

nik = {
  'age':32,
  'gender':'male',
  'employed':True,
}


print(nik['location'])


# Returns:
# KeyError: 'location'

如果你正在遍历一个字典,这将会中断程序的运行。所以我们可以尝试一下 .get() 方法。

这个方法在缺少 key 的情况下返回None,然后继续执行程序!

nik = {
  'age':32,
  'gender':'male',
  'employed':True,
}


print(nik.get('location'))


# Returns:
# None

3. 使用 zip()简化对多个列表的迭代

在很多情况下,你会收到多个集合(例如列表),因此需要集体遍历每个集合。

像例1中一样,可以使用 range (len (collection))方式来实现这一点,但是这将使得代码难以阅读。

例如,让我们来看看下面的例子:

names = ['Nik', 'Jane', 'Melissa', 'Doug']
ages = [32, 28, 37, 53]
gender = ['Male', 'Female', 'Female', 'Male']


# Old boring way:
for_looped = []
for i in range(len(names)):
    for_looped.append((names[i], ages[i], gender[i]))


print(for_looped)


# Returns:
# [('Nik', 32, 'Male'), ('Jane', 28, 'Female'), ('Melissa', 37, 'Female'), ('Doug', 53, 'Male')]


这里,我们有一个元组列表,其中包含每个列表中的项。

这样做是可以的,但是根据要迭代的项目数,这可能会变得很麻烦。

使用 Python 的内置 zip()函数,我们可以大大简化这个过程。

让我们看看这个例子,再次返回元组列表:

names = ['Nik', 'Jane', 'Melissa', 'Doug']
ages = [32, 28, 37, 53]
gender = ['Male', 'Female', 'Female', 'Male']


# Zipping through lists with zip()
zipped = zip(names, ages, gender)
zipped_list = list(zipped)


print(zipped_list)


# Returns:
# [('Nik', 32, 'Male'), ('Jane', 28, 'Female'), ('Melissa', 37, 'Female'), ('Doug', 53, 'Male')]

这样写起来干净多了!

你也可以直接将内容强制转换为字典,但是最多只能使用两个集合来完成!

例如,你想要一个键值对是 name:age 的字典,你可以写:

names = ['Nik', 'Jane', 'Melissa', 'Doug']
ages = [32, 28, 37, 53]
gender = ['Male', 'Female', 'Female', 'Male']


ages = dict(zip(names,ages))


print(ages)


# Returns
# {'Nik': 32, 'Jane': 28, 'Melissa': 37, 'Doug': 53}

对多于两个集合执行此操作将引发 ValueError 错误。

4.使用 f-strings 轻松打印到控制台

从python3.8开始,f-strings 还可以用于使用=字符对代码进行自文档化。

这意味着当你将变量的值打印到控制台时,不再需要写入 f“ variable _ name = { variable _ name }”。

让我们来看一个简单的例子:

some_variable = "HELLO!"


print(f"some_variable={some_variable}")


# Returns
# some_variable=HELLO!

相反,你可以简单地写:

some_variable = "HELLO!"


print(f"{some_variable=}")


# Returns
# some_variable=HELLO!

这是一个微妙的小转变,但是它使你的代码更容易阅读。

总结

这四个技巧可以使你的代码更加易读,并避免可能会无意间破坏你的代码的陷阱。

·  END  ·

HAPPY LIFE

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值