【问题标题】:Trim list to delimiter将列表修剪为分隔符
【发布时间】:2012-09-19 11:36:25
【问题描述】:

假设你有清单

`[1, 0, -1, 0, ';', 2, 0, 0, -1, ';', 0, 1, 0, -1, ';', 0, 1, -2, 0, ';', 0, 3, -6, 0, ';']`

什么是最简单的方法来向后修剪说第二次出现';',输出

[1, 0, -1, 0, ';', 2, 0, 0, -1, ';', 0, 1, 0, -1, ';', 0, 1, -2, 0]

【问题讨论】:

  • 你想修剪一个字符串,对吧?并得到另一个 string ?

标签: python list trim delimiter


【解决方案1】:

如果您有一个 list 作为输入,您可以尝试查找 ";" 的索引并从那里开始工作:

>>> L = [1, 0, -1, 0, ';', 2, 0, 0, -1, ';', 0, 1, 0, -1, ';', 0, 1, -2, 0, ';', 0, 3, -6, 0, ';']
>>> idx = [i for (i,v) in enumerate(L) if v == ";"]
>>> L[:idx[-2]]
[1, 0, -1, 0, ';', 2, 0, 0, -1, ';', 0, 1, 0, -1, ';', 0, 1, -2, 0, ';', 0, 3, -6, 0, ';']

【讨论】:

  • 这很好。我希望我能想到它。
【解决方案2】:
def get_part(lst,sep=';'):
    out = []
    for i in lst:
        if i == sep:
           yield out
           out = []
        else:
           out.append(i)

(您已经从 previous question 获得)。

现在,要修剪它,我们需要转换为列表:

lst = list(get_part(yourlist))
output_list = []
for part in lst[:-2]:
   output_list.extend(part)
   output_list.append(';')

但我之前的建议仍然有效。更好的数据结构是列表。

【讨论】:

    猜你喜欢
    • 2010-10-27
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    相关资源
    最近更新 更多