首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从整个引用数字列表中减去11

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

Stack Overflow用户
提问于 2019-11-14 16:15:02
回答 3查看 53关注 0票数 0

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

代码如下:

代码语言:javascript
复制
list1 = [ 1, '33', 2, '49', 3, '63']

print(list1-11)
EN

回答 3

Stack Overflow用户

发布于 2019-11-14 16:18:36

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

Ex:

代码语言:javascript
复制
lst = [ 1, '33', 2, '49', 3, '63']
print([int(i) - 11 if isinstance(i, str) else i for i in lst])

输出:

代码语言:javascript
复制
[1, 22, 2, 38, 3, 52]
票数 4
EN

Stack Overflow用户

发布于 2019-11-14 16:24:34

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

只需使用

代码语言:javascript
复制
print([int(i) - 11 for i in list])
票数 0
EN

Stack Overflow用户

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58852118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档