我试图生成一个大的变量列表,但是有些变量可能有子部分。下面的代码是我目前所在的位置。你知道吗
import string
Num_Phases = 4 # Number of Phases
Subphases = [2, 3] # Which Phases have Subphases
Num_Subphases = [2, 2] # How Many Phases the respective Subphase have
Phases = []
for i in range(1, Num_Phases + 1):
if i < 10:
# Start with regular name Convention
PhaseName = "Phase-0%s" %i
# Check to see if phase has subphase
for n in range(1, len(Num_Subphases) + 1):
if Subphases[n - 1] == i:
# If there is a Subphase, Check how many Subphases
for m in range(1, Num_Subphases[n - 1] + 1):
# for each subphase define a phase name
PhaseName = ("Phase-0%s" %i) + ('').join(string.ascii_lowercase[m-1])
# Combine Phases into list
Phases.append(PhaseName)
Phases.append(PhaseName)
我目前得到的结果是:
['Phase-01', 'Phase-02b', 'Phase-02b', 'Phase-03b', 'Phase-03b', 'Phase-04']
但我希望它是:
['Phase-01', 'Phase-02a', 'Phase-02b', 'Phase-03a', 'Phase-03b', 'Phase-04']
这将是一个非常大的数据集,但我用这个作为一个例子。你知道吗
将m添加到列表阶段时,它将始终设置为范围的最大值。在将PhaseName添加到“阶段”列表之前,您正在覆盖它。您可以在m循环中移动附加项,检查重复项以避免添加它们。你知道吗
另一种不使用太多嵌套for的可能方法是构建一个表示每个阶段的子阶段数的数组,然后可以在列表压缩中使用doble for来构建最终结果
相关问题 更多 >
编程相关推荐