Python Генерация лексикографического упорядоченного вывода из массива строк
Я работаю над программой на 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 ответ
В 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