欢迎关注 “小白玩转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