gpt4 book ai didi

python - 您如何概括创建具有许多变量和条件的列表 `if` ?

转载 作者:IT老高 更新时间:2023-10-28 21:05:50 27 4
gpt4 key购买 nike

我创建一个列表如下:

['v0' if x%4==0 else 'v1' if x%4==1 else 'v2' if x%4==2 else 'v3' for x in list_1]

如何泛化这样一个列表的创建,使其可以很容易地被更大数量的变量和后续条件扩展?

最佳答案

字符串格式

为什么不在这里使用模运算,并进行字符串格式化,例如:

['v{}'.format(x%4) for x in list_1]

因此,我们在这里计算 x%4,并将其附加到字符串中的 'v'。好处是我们可以轻松地将 4 更改为另一个数字。

元组或列表索引

如果输出字符串不遵循这样的结构,我们可以构造一个列表或元组来保存值。喜欢:

# in case the values do not follow a certain structure
vals = ('v0', 'v1', 'v2', 'v3')
[vals[x%4] for x in list_1]

通过以这种方式对其进行索引,可以清楚地知道哪些值将映射到哪个索引。这很好用,考虑到操作的结果 - 这里是 x%4 - 映射到一个 n (有一个合理的小 n)。

(默认)字典

如果操作没有映射到 n,但仍然映射到有限数量的 hashable 项,我们可以使用字典。例如:

d = {0: 'v0', 1: 'v1', 2: 'v2', 3: 'v3'}

或者如果我们想要一个“后备”值,则在查找失败时使用的值:

from collections import defaultdict

d = defaultdict(lambda: 1234, {0: 'v0', 1: 'v1', 2: 'v2', 3: 'v3'})

这里1234作为一个fallback值,然后我们可以使用:

[d[x%4] for x in list_1]

使用 d[x%4] 而不是 d.get(x%4) 给定 d 是一个字典,如果我们希望防止失败的查找被忽视。在这种情况下会出错。尽管错误通常不是一个好兆头,但在查找失败的情况下引发错误比添加默认值更好,因为这可能是某些事情无法正常工作的征兆。

关于python - 您如何概括创建具有许多变量和条件的列表 `if` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48140225/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com