Python Генерация лексикографического упорядоченного вывода из массива строк - PullRequest
0 голосов
/ 17 февраля 2019

Я работаю над программой на 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 голосов
/ 17 февраля 2019

В 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
...