Python 字符串格式的区别

Python difference between string formatting

长话短说。有人可以向我解释一下吗,简单的代码行可以和我写的所有 for 循环做同样的事情?

def z1(code1, code2):
   parse = lambda x: int(x.replace('-', ''))
   code1, code2 = parse(code1), parse(code2)
   print(code1, code2)
   return ["%02d-%03d" % divmod(x, 1000) for x in range(code1, code2+1)] <---

这是我的解决方案:

def z2(code1, code2):
  codes = []
  parse = lambda x: int(x.replace('-', ''))
  code1, code2= parse(code1), parse(code2)
  for x in range(code1, code2+1):
      x = str(x)
      a = x[0:2]
      b = x[2:6]
      c = a+"-"+b
      codes.append(f"{c}")
  return codes
["%02d-%03d" % divmod(x, 1000) for x in range(code1, code2+1)]

这称为列表理解,允许编写比创建空列表然后在循环中追加更简洁的代码。考虑以下示例

squares = []
for i in range(5):
    squares.append(i**2)

相当于

squares = [i**2 for i in range(5)]