如何垂直显示列表?

新手上路,请多包涵

我有一个字母列表,希望能够像这样垂直显示它们:

 a d
b e
c f

def main():
    letters = ["a", "b", "c", "d","e", "f"]
    for i in letters:
       print(i)

此代码仅像这样显示它们:

 a
b
c
d
e

原文由 user3339203 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 642
1 个回答

那是因为你在单独的行中 打印 它们。虽然你没有给我们足够的信息来 说明 你到底想如何打印它们,但我可以推断你想要第一列的前半部分和第二列的后半部分。

好吧,这不是那么容易,你需要提前考虑一下并意识到如果你计算列表的一半并保留它: h=len(letters)//2 你可以用变量迭代 i 通过列表的前半部分和打印在同一行 letters[i]letters[h+i] 正确吗?是这样的:

 def main():
    letters = ["a", "b", "c", "d","e", "f"]
    h = len(letters)//2 # integer division in Python 3
    for i in range(h):
       print(letters[i], letters[h+i])

您可以轻松地将它概括为没有对长度的列表,但这实际上取决于您在这种情况下想要做什么。

也就是说,通过使用 Python,您可以走得更远 :)。看看这段代码:

 def main():
    letters = ["a", "b", "c", "d","e", "f"]
    for s1,s2 in zip(letters[:len(letters)//2], letters[len(letters)//2:]): #len(letters)/2 will work with every paired length list
       print(s1,s2)

这将在 Python 3 中输出以下内容:

 a d
b e
c f

我刚刚所做的是使用 zip 函数对列表的两半进行分组形成元组。

为了完整起见,如果有一天你的列表没有一对长度,你可以使用 itertools.zip_longest 它或多或少像 zip 但如果两个可迭代对象都填充默认值’大小相同。

希望这可以帮助!

原文由 Paulo Bu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题