【问题标题】:Increment a string n number of times in python list在python列表中增加一个字符串n次
【发布时间】:2018-06-21 18:04:29
【问题描述】:

我在 python 中有一个如下列表。

a = ['191.10', '10.0']

现在我想创建另一个列表,如下所示

b = ['191.10', '10.0', '10.1', '10.2', '10.3' and so on till '10.255']

基本上用0.1递增第二个字符串

我怎样才能做到这一点。

【问题讨论】:

  • 总是第二个字符串还是最后一个字符串?
  • 你不能直接在字符串上做这样的算术运算。因此,将其转换为数字,在循环中进行算术运算,将每个结果转换回字符串。如果您遇到问题,请发布您的代码,我们可以帮助您解决问题。
  • 列表不应该以 10.3 或另一个 0.1 的增量而不是 10.255 结尾吗?
  • 看起来您真正想要做的是在 IPv4 子网上进行算术运算?如果是这样,您可能需要考虑将它们视为 IPv4 子网(例如,使用 ipaddress 库),而不是将它们视为字符串并对其实施难以猜测的算术规则,这只会​​让您感到困惑你在 6 个月后阅读了代码。

标签: python string list list-comprehension


【解决方案1】:

这是使用列表推导的一种方法:

a = ['191.10', '10.0']

b = a + ['10.'+str(i) for i in range(1, 256)]

结果:

['191.10', '10.0', '10.1', '10.2', ..., '10.254', '10.255']

【讨论】:

  • 我认为您不能在 b=.. 语句中硬编码 10。您必须在原始列表的第二个元素中提取点之前的数字。否则,原则就是正确的。
  • 你可以添加一个不需要显式调用str的python 3.6版本:[f'10.{i}' for i in range(256)]
  • 不,但是 OP 说“将第二个字符串增加 0.1”,我认为这意味着增加列表第二个元素中的任何数字。
  • @JohnRC 所说的。您不能只假设输入列表中的最后一项是'10.0'
  • 事实上,我想你也不应该假设它会是 x.0,所以理解应该从点 + 1 之后的任何数字开始
【解决方案2】:

最明显的方法可能是使用append() 语句。另外我假设您打算在这里写"b = ['191.10, '10.0', '10.001', '10.002', '10.003' and so on till '10.255']"

 a = ['191.10', '10.0']

 for n in range(1, 255):
      a.append(10 + (0.001*n))

【讨论】:

  • 可能不是,因为正如 abarnert 所说,这些看起来像 IPv4 子网,所以 '10.001' 无效。
猜你喜欢
  • 2021-06-24
  • 1970-01-01
  • 2010-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
  • 2017-11-20
  • 1970-01-01
  • 2021-10-08
相关资源
最近更新 更多