微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以此特定格式打印嵌套列表

如何解决以此特定格式打印嵌套列表

我正在经历自动化无聊的事情,diong 第 6 章第一个练习题:

tableData = [['apples','oranges','cherries','banana'],['Alice','Bob','Carol','David'],['dogs','cats','moose','goose']]

我想在不使用 zip 函数或地图的情况下尝试以下输出,因为我强迫自己在不使用这些方法的情况下更深入地了解列表操作。

苹果|爱丽丝 |狗

橙子|鲍勃 |猫

樱桃 |卡罗尔 |驼鹿

香蕉 |大卫 |鹅

到目前为止,我已经尝试了以下方法

for i in range(len(tableData[0])):
    print(' '.join(subLst[i] for subLst in tableData))

这确实给了我预期的输出,但是我使用的 range 参数感觉有点粗鲁,所以还有其他方法可以解决这个问题吗??

解决方法

您可以根据索引将每个值存储在一个哈希表(字典)中,然后将结果或对应的索引值打印在一起

tableData = [['apples','oranges','cherries','banana'],['Alice','Bob','Carol','David'],['dogs','cats','moose','goose']]
         
dic = {}
for sublist in tableData:
    for i,v in enumerate(sublist):
        if i not in dic:
            dic[i]=[v]
        else:
            dic[i].append(v)
            

for k,v in dic.items():
    print(" | ".join(v))

输出

apples | Alice | dogs
oranges | Bob | cats
cherries | Carol | moose
banana | David | goose

注意:这考虑到子列表的长度相同,如果长度不同,则将显示该索引的索引值但无法知道该值属于哪个子列表索引,以解决第一个需要制作所有子列表的问题相同长度,然后处理此代码。

,

您可以使用列表理解:

[[row[i] for row in tableData] for i in range(len(tableData[0]))]

[['apples','Alice','dogs'],['oranges','cats'],['cherries','moose'],['banana','David','goose']]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?