从整个引用数字列表中减去11

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

代码如下:

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

print(list1-11)
lxd2006121146 回答:从整个引用数字列表中减去11

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

例如:

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

输出:

[1,22,38,52]
,

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

只需使用

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

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理解我们可以将两个步骤结合起来,因为我们要做的实际上是将列表中的每个元素映射到其他元素。

本文链接:https://www.f2er.com/3104350.html

大家都在问