在用列表推导替换 for 循环时遇到了代码问题。代码看起来像这样,旨在展开没有符号和数字的文本。您只需要使用枚举更改部分。 编码:
def reverse_word(word) -> Union[int, str]:
word_out = []
specials = {}
for i, char in enumerate(word):
if char.isalpha():
word_out.append(char)
else:
specials[i] = char
word_out = word_out[::-1]
for key, word in specials.items():
word_out.insert(key, word)
return ''.join(word_out)
结果是这样的,但我不明白如何正确解决 i:
[word_out.append(i) if char.isalpha() else specials[i] = i for i in enumerate(word)]
大体同意insolor的评论
但如果你真的需要:
一般来说,这个问题可以在没有字典的情况下解决:
嗯,折叠了。你也可以用它
[letters.append(i) if word[i].isalpha() else specials.append(i) for i in range(len(word))]代替,这样以后列表就不会展开了。
appendinsert(0, .)这个任务可以通过不同的方式解决,但如果你想通过列表包含来完成,那么我是这样做的: