Python从字符串数组生成按字典顺序排序的输出

时间:2019-02-17 12:52:18

标签: python python-3.x lexicographic lexicographic-ordering

我正在研究一个Python(3)程序,其中我必须编写一个函数来生成输出,该输出将按字典顺序排列为字符串列表。

这是一个例子: 如果我们传递一个类似??2??00的字符串,我将其称为pattern,则它必须用一个整数替换问号,例如1,而名为scheule的关键字表示?的数量,并生成如下所示的输出:

0020100
0021000
0120000
1020000

,这是我尝试过的: 因此,如果pattern= '??2??00'scheule=4那么:

for ind, p in enumerate(pattern):
    if p == '?':
       s = pattern[ind].replace('?', str(scheule))
       available_schedule.append(s)
       break
     else:
       continue

它不会生成所需的输出,但是它是这样生成的:

['1', '2', '2', '3', '4', '4', '4']

1 个答案:

答案 0 :(得分:2)

在Python中,如果枚举str,则会获得一个字符列表(长度为1的字符串)。这样的输出。

如果在字符串中找不到模式,则

str.replace()将不执行任何操作,否则将替换所有出现的模式。

此片段产生所需的输出:

pattern = '??2??00'
pattern_pos = [i for i, c in enumerate(pattern) if c == '?']
schedule = '1'
result = pattern.replace('?', '0')
for i in reversed(pattern_pos):
    print(''.join([result[:i], schedule, result[i+1:]]))

输出:

0020100
0021000
0120000
1020000