我需要从列表中的每个引用数字中减去11。我在这个话题上到处寻找帮助,除了这里。
代码如下:
list1 = [ 1, '33', 2, '49', 3, '63']
print(list1-11)发布于 2019-11-14 16:18:36
这是一种使用isinstance检查类型和列表理解的方法。
Ex:
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]发布于 2019-11-14 16:24:34
您需要使用 int ()将这些字符串值转换为int,以便可以向其添加整数。
只需使用
print([int(i) - 11 for i in list])发布于 2019-11-14 16:33:00
TL;DR [int(x) - 11 for x in list1]
First减法不是在列表上定义的运算符。例如,它是为numpy数组定义的,其中只使用*数字。python中的列表可能包含任何内容,那么减法应该做什么呢?有些人可能会说,它应该创建一个没有元素11的新列表,或者至少第一次出现。在任何情况下,实际上你的代码都会失败,因为你会告诉你列表不知道减法是什么意思。
减法也没有在字符串上定义,也就是说,你不能期望'33' - 11返回22。也许在JavaScript中你可以,但在Python语言中就不行了。Python不会尝试将您提供给它的任何类型的对象转换为另一种类型,以便它可以应用某些运算符或方法。它宁愿失败并告诉你:如果你想让我把这个对象转换成一个int,你应该告诉我。
因此,我们使用int()包装列表中的所有对象,它会尝试将任何对象转换为int。对于套接字这样的随机对象,这将失败,但对于包含非法字符的字符串(如,您知道的,字母)也是如此。
一旦我们有了int对象的列表,我们就可以很高兴地从它们中减去另一个int,在本例中是11。使用Python的列表理解,我们可以将这两个步骤结合起来,因为我们想要做的实际上是将列表中的每个元素映射到其他元素。
https://stackoverflow.com/questions/58852118
复制相似问题