Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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

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-printing n';第四级子列表_Python_List_Nested - Fatal编程技术网

Python-printing n';第四级子列表

Python-printing n';第四级子列表,python,list,nested,Python,List,Nested,我有一个复杂的列表安排。有许多列表,其中一些有子列表。现在,将打印上述列表中的一些元素。更复杂的是,要打印的值的索引位于excel文件中,如下所示: [list_1,1,2] #Means - list[1][2] is to be printed (sub-lists are there) [list_2,7] #Means - list_2[7] is to be printed (no sub-list) ................ [list_100,3

我有一个复杂的列表安排。有许多列表,其中一些有子列表。现在,将打印上述列表中的一些元素。更复杂的是,要打印的值的索引位于excel文件中,如下所示:

   [list_1,1,2] #Means - list[1][2] is to be printed (sub-lists are there)
   [list_2,7]   #Means - list_2[7] is to be printed (no sub-list)
   ................
   [list_100,3,6] #Means list_100[3][6] is to be printed (sub list is there)
列表的数量很长,所以我使用了for循环和多个if语句。例如(伪代码):

请注意,excel工作表仅用于获取列表名称和索引,所有列表都保存在主代码中


有没有办法避免使用
if语句
并自动完成该部分?询问原因,if条件值仅基于excel工作表给出的长度。提前谢谢。

你能举个更好的例子吗?您的列表看起来如何?打印时所需的输出是什么

您可以打开文件,读取要打印到列表中的索引和列表名称,然后迭代该列表以打印所需内容

打印列表的方法有很多。您可以使用以下简单方法:

mylist = ['hello', 'world', ':)']
print ', '.join(mylist)


mylist2 = [['hello', 'world'], ['Good', 'morning']]
for l in mylist2:
   print(*l)

你能举个更好的例子吗?您的列表看起来如何?打印时所需的输出是什么

您可以打开文件,读取要打印到列表中的索引和列表名称,然后迭代该列表以打印所需内容

打印列表的方法有很多。您可以使用以下简单方法:

mylist = ['hello', 'world', ':)']
print ', '.join(mylist)


mylist2 = [['hello', 'world'], ['Good', 'morning']]
for l in mylist2:
   print(*l)

假设您有如下数据:

data = {
    "list1": [[100, 101, 102], [110, 111, 112], [120, 121, 123]],
    "list2": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    "list3": [[200, 201, 202], [210, 211, 212], [220, 221, 223]],
}
如果它是家庭作业,您的老师可能希望您使用递归来解决它,但我建议您使用Python中的迭代版本,除非您能够确保不会堆叠超过999个调用:

fetch_element(data, listname, *indices):
    value = data[listname]
    for index in indices:
        value = value[index]
    return value
然后您就有了所需元素的列表:

desired = [
    ["list1", 0, 0],
    ["list2", 7],
    ["list3", 2, 2],
]
现在您可以执行以下操作:

>>> [fetch_element(data, *line) for line in desired]
[100, 7, 223]
这与:

>>> [data["list1"][0][0], data["list2"][7], data["list3"][2][2]]
[100, 7, 223]

假设您有如下数据:

data = {
    "list1": [[100, 101, 102], [110, 111, 112], [120, 121, 123]],
    "list2": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    "list3": [[200, 201, 202], [210, 211, 212], [220, 221, 223]],
}
如果它是家庭作业,您的老师可能希望您使用递归来解决它,但我建议您使用Python中的迭代版本,除非您能够确保不会堆叠超过999个调用:

fetch_element(data, listname, *indices):
    value = data[listname]
    for index in indices:
        value = value[index]
    return value
然后您就有了所需元素的列表:

desired = [
    ["list1", 0, 0],
    ["list2", 7],
    ["list3", 2, 2],
]
现在您可以执行以下操作:

>>> [fetch_element(data, *line) for line in desired]
[100, 7, 223]
这与:

>>> [data["list1"][0][0], data["list2"][7], data["list3"][2][2]]
[100, 7, 223]

对不起,我不明白你的问题。你能提供一个更清楚的例子吗?给我们一个python的示例列表。@Pils19,谢谢你的评论。已编辑,我现在清楚了吗?请用您尝试过的方法更新您的问题,以及您面临的问题。@PauloScardine,谢谢您的评论,请查看我编辑的问题。对不起,我不明白您的问题。您能提供一个更清楚的示例吗?用python向我们展示一个示例列表。@Pils19,谢谢您的评论。编辑,我现在清楚了吗?请用您尝试过的方法更新您的问题,以及您面临的问题。@PauloScardine,谢谢您的评论,请查看我编辑的问题。谢谢您的评论@Alg。我已经编辑了我的答案。我想问的是,当我遇到诸如:print:list[a][b]或list[a]这样的情况时,如何自动化打印。我的意思是如何自动放置所需的索引数。感谢您对@Alg的评论。我已经编辑了我的答案。我想问的是,当我遇到诸如:print:list[a][b]或list[a]这样的情况时,如何自动化打印。我的意思是如何自动输入所需的索引数。非常感谢Paulo,这是我想要的答案。非常感谢Paulo,这是我想要的答案。