【发布时间】:2023-02-06 23:50:48
【问题描述】:
我想使用三个大写字母的所有组合创建一组身份,同时避免 for 循环以节省计算时间。我想要的身份范围从 ID_AAA 到 ID_ZZZ。
我可以使用 for 循环来做到这一点:
> from string import ascii_uppercase
> IDs = []
> for id_first_letter in ascii_uppercase:
> for id_second_letter in ascii_uppercase:
> for id_third_letter in ascii_uppercase:
> IDs.append('ID_' + id_first_letter + id_second_letter + id_third_letter)
但是我当然想在这里简化代码。我曾尝试使用 map 函数,但我能想到的最好的方法是:
> from string import ascii_uppercase
> IDs = list(map(lambda x,y,z: 'ID_' + x + y + z,ascii_uppercase,ascii_uppercase,ascii_uppercase))
这是同时遍历所有字母,所以我只能得到ID_AAA、ID_BBB、...、ID_ZZZ。作为结果,所有三个字母总是相同的。我可以微调这种方法以便一次迭代一个字母,还是我需要使用一种完全不同的方法?
【问题讨论】:
-
你说你想简化你的代码,但你的代码已经是真的很简单。也许是最简单的。为什么您认为避免循环会使它变得更简单?
-
@KellyBundy 谢谢!然而,我确实确信使用 for 循环是执行此操作的计算效率最低的方法,并且我确信我可以使用 map 函数或其他运行速度更快的方式来执行此操作。事实证明,即使使用 itertools 模块,我也无法在任何情况下避免循环。
标签: python iterator string-concatenation