【问题标题】:Subtract 11 from entire list of quoted numbers从引用数字的整个列表中减去 11
【发布时间】:2019-11-14 08:15:02
【问题描述】:

我需要从列表中每个引用的数字中减去 11。除了这里,我到处寻找有关此主题的帮助。

代码如下:

list1 = [ 1, '33', 2, '49', 3, '63']

print(list1-11)

【问题讨论】:

  • 您要从列表中的所有元素中减去 11,还是仅从字符串(“引用”)中减去 11?

标签: python list subtraction


【解决方案1】:

这是使用isinstance 检查类型和列表理解的一种方法。

例如:

lst = [ 1, '33', 2, '49', 3, '63']
print([int(i) - 11 if isinstance(i, str) else i for i in lst])

输出:

[1, 22, 2, 38, 3, 52]

【讨论】:

  • 谢谢 Rakesh,我还有一个问题。您现在如何在列表的这一部分上使用模运算我希望在其上使用 mod 121: lst = [22, 236, 23, 242, 24, 248 ] 我希望只对枚举后的每个数字进行 mod,例如 236, 242 和 248 由 mod 121 提供。
【解决方案2】:

您需要使用 int() 将这些字符串值转换为 int,以便您可以向其中添加一个整数。

简单地使用

print([int(i) - 11 for i in list])

【讨论】:

    【解决方案3】:

    TL;DR [int(x) - 11 for x in list1]

    第一个减法不是在列表上定义的运算符。它是为 numpy 数组定义的,例如,其中仅使用 * 数字。 python中的列表可能包含任何内容,那么减法应该做什么?有人可能会说它应该创建一个没有元素 11 或至少第一次出现的新列表。无论如何,实际上你的代码只会因为告诉你列表不知道减去意味着什么而失败。

    减法也没有在字符串上定义,即你不能指望'33' - 11返回22。也许在 JavaScript 中你可以,但在 Python 中不行。 Python 不会尝试将您提供给它的任何类型的对象转换为另一种类型,以便它可以应用某些运算符或方法。它宁愿失败并告诉你:如果你想让我将此对象转换为int,你应该告诉我。

    因此,我们使用int() 包装列表中的所有对象,它试图将任何可以转换的对象转换为int。这对于像套接字这样的随机对象以及其中包含非法字符(如字母)的字符串都会失败。

    一旦我们有了int 对象的列表,我们就可以愉快地从它们中减去另一个int,在这种特殊情况下为11。使用 Python 的 list comprehension,我们可以将这两个步骤结合起来,因为我们要做的本质上是将列表中的每个元素映射到其他元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 2021-11-17
      • 1970-01-01
      相关资源
      最近更新 更多