你如何用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'
我明白为什么我收到这个错误。 但我很沮丧,我找不到解决scheme。
还试过:
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)
但有没有更容易/更快的方式来做到这一点?
惯用的方法是使用列表理解:
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]
你首先尝试的方式实际上可能是numpy :
import numpy myArray = numpy.array([10,20,30,40,50,60,70,80,90]) myInt = 10 newArray = myArray/myInt
如果你用长列表进行这样的操作,特别是在任何科学计算项目中,我真的会build议使用numpy。
>>> 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]
myList = [10,20,30,40,50,60,70,80,90] myInt = 10 newList = [i/myInt for i in myList]