Python—迭代任何类型的列表结构
很抱歉,如果已经回答了这个问题,我对python非常陌生,我已经仔细查看了一下,发现这个页面对我有一些帮助,但我仍然被卡住了 我试图在我的脚本中使用任何类型的输入,我让它为一个项目和一个项目列表工作,但是我发现很难让它为一个列表工作 我根据注释编辑了代码,使其更有意义:Python—迭代任何类型的列表结构,python,list,ironpython,Python,List,Ironpython,很抱歉,如果已经回答了这个问题,我对python非常陌生,我已经仔细查看了一下,发现这个页面对我有一些帮助,但我仍然被卡住了 我试图在我的脚本中使用任何类型的输入,我让它为一个项目和一个项目列表工作,但是我发现很难让它为一个列表工作 我根据注释编辑了代码,使其更有意义: Input = [[1,2,3],[4,5,6],[7,8,9]] if isinstance(Input, list): Input = Input else: Input = [Input] listou
Input = [[1,2,3],[4,5,6],[7,8,9]]
if isinstance(Input, list):
Input = Input
else:
Input = [Input]
listout = []
for x in Input:
listout.append(x+2)
print (listout)
返回:第12行,输入
listout.append(x+2)
TypeError:只能将列表(而不是“int”)连接到列表
例如,如果Input=1或Input=[1,2,3,4],则此方法有效,但对于上述情况则无效
对于列表列表,我希望输出如下所示:
[[3,4,5],[6,7,8],[9,10,11]]
我试图首先从嵌套列表中生成一个平面列表,但我希望保留输出的列表结构
谢谢大家的阅读
TJ
< P>你可以考虑:如果无法使用numpy,则需要为任意嵌套编写递归过程:
def nested_sum(e,n):
if isinstance(e, list):
return [nested_sum(x, n) for x in e]
else:
return e+n
>>> nested_sum([1,[2,3],[4,5,6],[7,[8],9]], 2)
[3, [4, 5], [6, 7, 8], [9, [10], 11]]
如果只有两个嵌套级别(如示例中所示),则可以执行列表理解:
>>> li=[[1,2,3],[4,5,6],[7,8,9]]
>>> [[e+2 for e in sl] for sl in li]
[[3, 4, 5], [6, 7, 8], [9, 10, 11]]
使用列表理解展平列表也许你可以使用预定义的
输入,而不是使用一些库来实现这一点。可能只是Input=1
,Input=[1,2,3]
,等等,然后根据这些解释什么不起作用(或者你想要什么)。我建议避免编写一开始就试图处理不均匀输入的代码。它会导致难看的代码。@wim所以建议使用两个单独的脚本?一个用于嵌套列表,一个用于单个输入/列表?谢谢,这确实有效,但我正在一个使用基于.NET的ironpython实现的程序中使用它,因此它不支持numpy(据我所知)。已更新。尝试递归或列表理解。干杯@dawg你是个明星,嵌套的求和定义正是我想要的。
>>> li=[[1,2,3],[4,5,6],[7,8,9]]
>>> [[e+2 for e in sl] for sl in li]
[[3, 4, 5], [6, 7, 8], [9, 10, 11]]