问题:如何将列表中的每个元素除以int?
我只想将一个列表中的每个元素都用一个int分隔。
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = myList/myInt
这是错误:
TypeError: unsupported operand type(s) for /: 'list' and 'int'
我了解为什么收到此错误。但是我为找不到解决方案感到沮丧。
还尝试了:
newList = [ a/b for a, b in (myList,myInt)]
错误:
ValueError: too many values to unpack
预期结果:
newList = [1,2,3,4,5,6,7,8,9]
编辑:
以下代码给了我预期的结果:
newList = []
for x in myList:
newList.append(x/myInt)
但是,有没有更容易/更快的方法来做到这一点?
回答 0
惯用的方法是使用列表理解:
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = [x / myInt for x in myList]
或者,如果您需要保留对原始列表的引用:
myList[:] = [x / myInt for x in myList]
回答 1
实际上,您首先可以使用numpy直接尝试:
import numpy
myArray = numpy.array([10,20,30,40,50,60,70,80,90])
myInt = 10
newArray = myArray/myInt
如果您使用长列表进行此类操作,尤其是在任何类型的科学计算项目中,我都会建议您使用numpy。
回答 2
>>> myList = [10,20,30,40,50,60,70,80,90]
>>> myInt = 10
>>> newList = map(lambda x: x/myInt, myList)
>>> newList
[1, 2, 3, 4, 5, 6, 7, 8, 9]
回答 3
myList = [10,20,30,40,50,60,70,80,90]
myInt = 10
newList = [i/myInt for i in myList]
回答 4
抽象版本可以是:
import numpy as np
myList = [10, 20, 30, 40, 50, 60, 70, 80, 90]
myInt = 10
newList = np.divide(myList, myInt)
回答 5
myInt=10
myList=[tmpList/myInt for tmpList in range(10,100,10)]
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。