今天,我将与您分享掌握 Python 的最佳技巧和窍门!
每个初学者都应该知道的 15 个 Python 提示和技巧!_解包

这些技巧基于我在 ClashOfCode 期间使用 Codingame 的经验(我曾一度进入前 100 名:))

1/ 创建一个数字序列
有时您可能想要创建一个数字序列:一个相当直观的方法是创建一个循环并执行 append() 方法的 n 次调用。

my_list = []
for i in range(0, 10, 1):
    my_list.append(i)

实际上这个操作相当耗时,最好写成:

my_list = range(0,10,1)
>>> my_list = [0,1,2,3,4,5,6,7,8,9]

这不仅写入速度更快,而且计算速度更快!

2/ 叠加两个字典
连接两个字典可以是一个有用的操作来分组信息并避免在大量变量中丢失…
所以我们可以使用 update() 方法:

a = {“alpha”: 3, “beta”: 5}
b = {“gamma”: 1, “delta”: 12}

a.update(b)
>>> a = {“alpha”: 3, “beta”: 5, “gamma”: 1, “delta”: 12}

警告:如果有两个相同的键,那么值将是字典 b 的值。

3/ 创建一个序列字典
每个初学者都应该知道的 15 个 Python 提示和技巧!_python_02

通过创建序列字典,我的意思是轻松创建(在一行中)一个字典,其中键取决于 x,而值也取决于 x。但是,可以修改此方法以根据列表、输入等创建字典…

my_dic = {(x+2): (x**2 + 1) for x in range(4)}
>>> my_dic = {2: 1, 3: 2, 4: 5, 5: 10}

4/ 反转列表
反转列表是您可以在 Python 中做的最有用的事情之一。这个操作你一定要知道!

my_list = [1, 2, 3, 4]
my_list = my_list[::-1]
>>> my_list = [4, 3, 2, 1]

与内置函数 reversed() 相比,它的编写速度要快得多,可读性要好得多,尤其是执行速度要快得多。

5/ 解包一个元组
解包元组是一个有趣的操作,尤其是对值执行操作,并避免每次都必须通过索引检索值:

my_tup = (0, 1, 2, 3)
a, b, c, d = *my_tup
>>> a = 0
>>> b = 1
>>> c = 2
>>> d = 3

6/ 过滤列表
过滤列表在算法或更常见的程序中是一个有用的过程。您可以通过将列表传递给充当过滤器的函数来保留所需的值。此函数返回 True(保留值)或 False(删除值)。
每个初学者都应该知道的 15 个 Python 提示和技巧!_python_03

my_list = [1,2,3,4]

def my_filter(x):
    if x==3 or x%2==0:
        return True
    else:
        return False

my_list = list(filter(my_filter, my_list))
>>> my_list = [2,3,4]

7/ 从函数返回多个值
我们知道要从列表中返回一个值,我们必须使用 return。但是,函数在返回值后停止。但是,我们可以使用 yield 继续执行该函数。用于返回变量、调试等。

def my_func(x)
    for i in range(x):
         yield x**2

for k in my_func(4):
    print(k)
>>> 0
>>> 1
>>> 4
>>> 9

8/导入这个
这个图书馆与其说是个把戏,不如说是个笑话,但很高兴知道它的语言的小复活节彩蛋:

import this

The Zen of Python
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
. . .

9/ 集合的基本操作
如果我们有两个集合 a 和 b 使得:

a = {1,2,3}
b = {3,4,5}

那么我们就可以进行以下你必须知道的操作!

# Union 
print(a & b)
>>> {1, 2, 3, 4, 5}
# Intersection 
print(a | b)
>>> {3}
# Symetric difference
print(a ^ b)
>>> {1, 2, 4, 5}

10/ 代码 if : else : 在一行中
这不是最有用的技巧,但是知道如何在一行中编写 if : else : 以使代码更清晰,或者在 codeame 上的最短代码竞赛中总是很有用的!

i = 1 if True else 2
>>> i = 1

11/ 限制算法的递归次数
限制算法的递归次数对于避免超时很有用。当您知道最大递归数时,它甚至是要做的第一件事!您可以使用 Python 库 sys 来实现:

import sys
sys.setrecursionlimit(1000)

12/ 更快地打印文本
当我们必须在 Python 中打印文本时,我们默认使用 print() 方法!但是,当您必须打印数千行时,此方法可能会很慢。在这种情况下,我们使用:

import sys
sys.stdout.write(“im Adrien”) # only string

您可以对输入使用类似的方法,但它有点复杂:)

这种方法比普通打印快8倍

13/ 有一个列表的中间项
将项目放在列表中间是解包此列表时要知道的一个小技巧…实际上,这取决于开头和结尾处的变量数量(如果不想保留变量,则下划线)最后,您可以拥有一个包含一系列值的变量,其中仅包含“中间”值,实际上,是未放入其他变量中的值!

l = [1,2,3,4,5,6,7]
a, *b, c = l
>>> a = 1
>>> b = [2,3,4,5,6]
>>> c = 7

14/ 用 _ 分隔大数
为了提高可读性,并且因为 Python 不允许数字之间有空格,我们可以使用 _。例如, 1 000 000 000 可以用 Python 编写:

1_000_000_000

15/ 交换字典的键/值
交换字典的键和值是一种很有用的技术,尤其是在人工智能领域:)。这是如何做到的:

my_dic = {“a”: 1, “b”: 2}
my_dic = {v:k for k, v in my_dic.items()}
my_dic = {1: “a”, 2: “b”}

结论
这就是今天的全部内容,希望您喜欢这篇文章,并且能够提高您的编码技能!不要犹豫,与您的朋友分享这篇文章,并在评论中给我您的反馈!