Python 有没有更简单的方法来删除数组中每个字符串前面的“-”

Python 有没有更简单的方法来删除数组中每个字符串前面的“-”,python,Python,我正在寻找一种更简单的方法来删除列表中每个字符串前面的“-”。如果字符串前面有一个“-”,则只显示第一个“-” note_tmp = [ "-some-text", "-other text", "another-one", "-text number four" ] note_done = [] for note in note_tmp: if note.startswith("-"): note_done.append(note[1:]

我正在寻找一种更简单的方法来删除列表中每个字符串前面的“-”。如果字符串前面有一个“-”,则只显示第一个“-”

note_tmp = [
    "-some-text",
    "-other text",
    "another-one",
    "-text number four"
]
note_done = []
for note in note_tmp:
    if note.startswith("-"):
        note_done.append(note[1:])
    else:
        note_done.append(note)

print(note_done)
我认为这可以写得容易得多

谢谢你的帮助

您可以使用列表理解来实现这一点,如下所示:

my_list = [
    "-some-text",
    "-other text",
    "another-one",
    "-text number four"
]

new_list = [s.lstrip('-') for s in my_list]
新的_列表将保存值的位置:

['some-text', 'other text', 'another-one', 'text number four']
您可以使用“列表理解”来实现以下目的:

my_list = [
    "-some-text",
    "-other text",
    "another-one",
    "-text number four"
]

new_list = [s.lstrip('-') for s in my_list]
新的_列表将保存值的位置:

['some-text', 'other text', 'another-one', 'text number four']
str.lstrip“-”应执行以下操作:

In [83]: note_tmp = [
    ...:     "-some-text",
    ...:     "-other text",
    ...:     "another-one",
    ...:     "-text number four"
    ...: ]

In [84]: [s.lstrip('-') for s in note_tmp]
Out[84]: ['some-text', 'other text', 'another-one', 'text number four']
S.lstrip[chars]>str

返回删除前导空格的字符串S的副本。 如果给定了字符而不是无,则删除字符中的字符

str.lstrip“-”应执行以下操作:

In [83]: note_tmp = [
    ...:     "-some-text",
    ...:     "-other text",
    ...:     "another-one",
    ...:     "-text number four"
    ...: ]

In [84]: [s.lstrip('-') for s in note_tmp]
Out[84]: ['some-text', 'other text', 'another-one', 'text number four']
S.lstrip[chars]>str

返回删除前导空格的字符串S的副本。 如果给定了字符而不是无,则删除字符中的字符


只需添加一种替代方法,使用列表切片和列表理解

note_tmp = [
        "-some-text",
        "-other text",
        "another-one",
        "-text number four"
    ]

new_note_tmp = [x[1:] if x[0] == '-' else x for x in note_tmp]

print(new_note_tmp)

>>>['some-text', 'other text', 'another-one', 'text number four']

只需添加一种替代方法,使用列表切片和列表理解

note_tmp = [
        "-some-text",
        "-other text",
        "another-one",
        "-text number four"
    ]

new_note_tmp = [x[1:] if x[0] == '-' else x for x in note_tmp]

print(new_note_tmp)

>>>['some-text', 'other text', 'another-one', 'text number four']

非常感谢。那个worked@swiftlynx乐意帮忙:谢谢;,那个worked@swiftlynx乐意帮忙:谢谢;,谢谢你;,对工作列表的理解并没有使它变短,我不同意,因为它明显缩短了5行。此外,没有人要求一个“更短”的解决方案;但这也不是更短,因为我认为更短意味着更少的时空复杂性;而不是代码获得的行。但它确实有好处,它只删除字符串开头的一个“-”,这与.lstrip版本不同。列表理解不会使它变短。我希望有所不同,因为它明显缩短了5行。此外,没有人要求一个“更短”的解决方案;但这也不是更短,因为我认为更短意味着更少的时空复杂性;而不是代码获得的行。但它确实有好处,它只删除字符串开头的一个“-”,这与.lstrip版本不同。我不知道是否有某种方法;但是我想,;这些方法最终也会如此;即迭代和检查;然后进行修改和追加;你们当然已经做到了。还有一件事可以缩短;删除else块并直接修改主列表(如果有安全副本,我不知道是否有某种方法);但是我想,;这些方法最终也会如此;即迭代和检查;然后进行修改和追加;你们当然已经做到了。还有一件事可以缩短;如果某个地方有安全副本,请删除else块并直接修改主列表