gpt4 book ai didi

python - 将多个嵌套列表转换为整数

转载 作者:太空宇宙 更新时间:2023-11-04 07:13:44 25 4
gpt4 key购买 nike

我有一个列表中的列表,并且想将所有值更改为整数。我已经做到了这一点,但假设我让用户指定他们将拥有的列表中的列表数量。我怎样才能将所有这些值也转换为整数?

我有以下代码,它当前接受任何列表或列表中的任何列表,并将所有值转换为整数。我可以看到如何将其扩展到列表中的更多列表,但这可能是不必要的,或者可能还不够。当然,这看起来很慢并且需要大量代码。

for i in l:
index = l.index(i)
l[index] = list(map(int, l[index]))

我的列表是ll中的每个列表都是i。我获取 i 的索引,并将其中的所有值转换为整数。我如何创建一个函数/循环来接收列表中有多少个列表,并将它们全部转换为整数?

例如在这个输入上:

l = [['6', '5'], '7', ['88', '99', '1']]

上面的代码会返回:

[[6, 5], 7, [88, 99, 1]]

但是,如果我有:

l = [['6', '7'], ['6', ['7', '8']]]

我收到错误:

"TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'"

我理解这是因为我只转换嵌套在列表中的列表,而不是嵌套在列表中嵌套的列表,所以它认为我正在尝试将整个列表转换为整数。

长话短说,我如何构建一个可以将任意数量的嵌套列表转换为整数的函数?

最佳答案

您可以使用递归函数每次都进入一个级别:

def convert_rec(x):
if isinstance(x, list):
return list(map(convert_rec, x))
else:
return int(x)

请注意,现在您无需使用循环,只需对整个列表调用此函数即可。这按预期工作:

>>> l = [['6', '5'], '7', ['88', '99', '1']]
>>> print(convert_rec(l))
[[6, 5], 7, [88, 99, 1]]

>>> l = [['6', '7'], ['6', ['7', '8']]]
>>> print(convert_rec(l))
[[6, 7], [6, [7, 8]]]

另请注意,此代码在尝试转换为 int 时可能会抛出异常,因此对于更通用且更易于调试的代码,请添加 try/except:

def convert_rec(x):
if isinstance(x, list):
return list(map(convert_rec, x))
else:
try:
x = int(x)
except ValueError as ve:
print(ve)
except TypeError as te:
print(te)
finally:
return x

关于python - 将多个嵌套列表转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56825965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com