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
Другие вопросы по тегам