首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python-打印第n层子列表

Python-打印第n层子列表
EN

Stack Overflow用户
提问于 2018-07-05 05:24:31
回答 2查看 47关注 0票数 0

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

代码语言:javascript
复制
   [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语句。例如(伪代码):

代码语言:javascript
复制
for i in range(100): #because 100 lists are there in excel
    if len(row_i) == 3:
        print(list_name[excel_column_1_value][excel_column_2_value])
    else:
        print(list_name[excel_column_1_value])

请注意,excel表只获取列表名称和索引,列表都保存在主代码中。

有没有什么方法可以避免if statements,并使该部分实现自动化?询问是因为,if条件值仅基于excel表给出的长度。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-05 12:27:56

假设你有这样的数据:

代码语言:javascript
复制
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个调用:

代码语言:javascript
复制
fetch_element(data, listname, *indices):
    value = data[listname]
    for index in indices:
        value = value[index]
    return value

然后您就有了所需的元素列表:

代码语言:javascript
复制
desired = [
    ["list1", 0, 0],
    ["list2", 7],
    ["list3", 2, 2],
]

现在您可以执行以下操作:

代码语言:javascript
复制
>>> [fetch_element(data, *line) for line in desired]
[100, 7, 223]

这与以下内容相同:

代码语言:javascript
复制
>>> [data["list1"][0][0], data["list2"][7], data["list3"][2][2]]
[100, 7, 223]
票数 1
EN

Stack Overflow用户

发布于 2018-07-05 06:02:49

你能贴一个更好的例子吗?你的列表是什么样子的,打印时想要的输出是什么?

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

有许多方法可以打印一个简单的列表,您可以使用:

代码语言:javascript
复制
mylist = ['hello', 'world', ':)']
print ', '.join(mylist)


mylist2 = [['hello', 'world'], ['Good', 'morning']]
for l in mylist2:
   print(*l)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51180906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档