【问题标题】:Python Generate a lexicographic ordered output from array of stringsPython从字符串数组生成字典顺序输出
【发布时间】:2019-02-17 12:52:17
【问题描述】:

我正在编写一个 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']

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    猜你喜欢
    • 2023-04-07
    • 2021-12-05
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2016-06-14
    相关资源
    最近更新 更多