如何解决以此特定格式打印嵌套列表
我正在经历自动化无聊的事情,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 举报,一经查实,本站将立刻删除。