Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—迭代任何类型的列表结构_Python_List_Ironpython - Fatal编程技术网

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

很抱歉,如果已经回答了这个问题,我对python非常陌生,我已经仔细查看了一下,发现这个页面对我有一些帮助,但我仍然被卡住了

我试图在我的脚本中使用任何类型的输入,我让它为一个项目和一个项目列表工作,但是我发现很难让它为一个列表工作

我根据注释编辑了代码,使其更有意义:

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]]