我有一个列表,它由更多的字符串列表组成,这些字符串可以表示单词(在字母数字意义上)或int,例如
myLists = [['5','cat','23'],
['33','parakeet','scalpel'],
['correct','horse','battery','staple','99']]
我想解析数组,以便将所有整数表示转换为int。我有一个简单的函数,numParser(string)用于此目的:
^{pr2}$在我的c/java背景下,我通常只迭代两个数组,改变每个值(尽管这些数组是同构的)。但我对python还不熟悉,我觉得有更好的方法可以做到这一点,所以我四处搜索,找到了一些关于map()和list comprehension的so帖子。列表理解似乎不是正确的方法,因为列表不是统一的,但是map()似乎应该可以工作。为了测试,我做了
a=['cat','5','4']
a = map(numParser, a)
这很管用。不假思索,我在一个嵌套循环上做了同样的事情,但事实并非如此。在
for single_list in myLists:
single_list = map(numParser, rawData)
现在,在接收到一个未更改的2D数组之后,我突然想到迭代器正在处理对数组的引用,而不是数组本身。是否有一种超级时髦的python方法来实现我将所有整数表示形式转换为整数的目标,还是需要直接访问每个数组值来更改它,例如myLists[1][2]=numParser(myLists[1][2])?在
您可以使用列表理解来执行此操作:
您可以使用嵌套列表理解并使用
str.isdigit()
方法检查字符串是否为数字,然后将其转换为int
:或者,如果您想使用您的函数,您可以将其传递给
map
函数或在列表理解中使用。在以下是一种方法:
这种方法的优点是您实际上替换了现有列表中的元素,而不是创建新的列表。在
相关问题 更多 >
编程相关推荐