【问题标题】:Python difference between string formattingPython字符串格式化之间的区别
【发布时间】:2022-01-22 03:30:03
【问题描述】:

长话短说。谁能给我解释一下这是怎么回事,简单的代码行就可以和我写的所有 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) 并将其与x = 312 和x = 123456 的逻辑进行比较。特别检查divmod 的作用。
  • @luk2302 好的,我有点明白,但是你能不能这么好心,一步一步给我解释一下?

标签: python string lambda formatting


【解决方案1】:
["%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)]

【讨论】:

    猜你喜欢
    • 2013-07-28
    • 1970-01-01
    • 2017-01-29
    • 2018-05-07
    • 2023-03-14
    • 2011-05-16
    • 2013-05-26
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多