将 "Pre-Zipped" 列表值转换为整数
Converting "Pre-Zipped" list values to integers
我经常有一个 "pre-zipped"(元素是列表)数据的列表。我正在尝试将每个项目转换为整数(通常来自输入字符串)。
如何将复杂列表中的每个元素都变成整数?
我最初尝试了列表理解:
ls = ["1", "2", ["3", "4", "5"], "6"]
ls = [int(i) for i in ls]
但是 int 函数不能接受可迭代对象,所以它在 int(["3", "4", "5"])
上中断
环顾四周,我了解了 map() 函数,它将一个函数应用于可迭代对象中的每个项目。
ls = ["1", "2", ["3", "4", "5"], "6"]
print(map(lambda x: int(x), ls))
以上代码输出
<map object at 0x000001A84C46E898>
但是当我尝试将其转换为列表时,出现错误
ls = ["1", "2", ["3", "4", "5"], "6"]
print(list(map(lambda x: int(x), ls)))
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
所以我觉得 map 正在将列表传递给 int() 函数。我也试过 itertools.starmap():
import itertools
ls = ["1", "2", ["3", "4", "5"], "6"]
print(list(itertools.starmap(lambda x: int(x), ls)))
然而,这似乎与 map() 的行为相同:返回无法转换为列表的地图对象。
非常感谢您的帮助。谢谢!
您可以对 int(thing)
:
上抛出的事物使用异常处理
def makeInt(data):
try:
k = int(data)
except ValueError:
k = [makeInt(d) for d in data]
return k
ls = ["1", "2", ["3", "4", "5"], "6"]
t = makeInt(ls)
print(t)
输出:
[1, 2, [3, 4, 5], 6]
如果您向列表中提供非整数数据,这仍然会失败。
我经常有一个 "pre-zipped"(元素是列表)数据的列表。我正在尝试将每个项目转换为整数(通常来自输入字符串)。
如何将复杂列表中的每个元素都变成整数?
我最初尝试了列表理解:
ls = ["1", "2", ["3", "4", "5"], "6"]
ls = [int(i) for i in ls]
但是 int 函数不能接受可迭代对象,所以它在 int(["3", "4", "5"])
上中断环顾四周,我了解了 map() 函数,它将一个函数应用于可迭代对象中的每个项目。
ls = ["1", "2", ["3", "4", "5"], "6"]
print(map(lambda x: int(x), ls))
以上代码输出
<map object at 0x000001A84C46E898>
但是当我尝试将其转换为列表时,出现错误
ls = ["1", "2", ["3", "4", "5"], "6"]
print(list(map(lambda x: int(x), ls)))
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
所以我觉得 map 正在将列表传递给 int() 函数。我也试过 itertools.starmap():
import itertools
ls = ["1", "2", ["3", "4", "5"], "6"]
print(list(itertools.starmap(lambda x: int(x), ls)))
然而,这似乎与 map() 的行为相同:返回无法转换为列表的地图对象。
非常感谢您的帮助。谢谢!
您可以对 int(thing)
:
def makeInt(data):
try:
k = int(data)
except ValueError:
k = [makeInt(d) for d in data]
return k
ls = ["1", "2", ["3", "4", "5"], "6"]
t = makeInt(ls)
print(t)
输出:
[1, 2, [3, 4, 5], 6]
如果您向列表中提供非整数数据,这仍然会失败。