下面的python代码可以改成一行吗?# python

  • 本文关键字:python 一行 代码 python
  • 更新时间 :
  • 英文 :

str2 = "15X8XXX6X8X"
for i in range(len(str2)):
if str2[i] == "X":
str2 = str2.replace("X", str2[i-1], 1)
print(str2)

输出结果:15588886688

用先前的值填充X。如何简化以上代码?如果方便的话,其他想法更好,并且尽可能在一行中写。提前感谢。

您可以使用functools.reduce:

import functools
str2 = "15X8XXX6X8X"
print(''.join(functools.reduce(lambda s, c: s + (s[-1] if c == 'X' else c), str2)))
# Outputs 15588886688

对于str2中的每个字符,构建一个字符串,如果当前字符是'X',则读取最后一个字符,否则使用当前字符"


另一种选择是使用itertools.accumulate:

import itertools
str2 = "15X8XXX6X8X"
print(''.join(itertools.accumulate(str2, lambda s, c: c.replace('X', s[-1]))))
# Outputs 15588886688

这稍微提高了可读性,但是代码少并不等于好代码。

最新更新