如何垂直显示列表?

use*_*203 5 python string list python-3.x

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

a d
b e
c f

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

此代码仅显示如下:

a
b
c
d
e
Run Code Online (Sandbox Code Playgroud)

Pau*_* Bu 9

那是因为你在不同的行中打印它们.虽然你没有给我们足够的信息如何你想在实际打印他们,我可以推断出你想在第一列上半年和第二科拉姆下半年.

嗯,这不是那么容易,你需要提前考虑并意识到,如果你计算列表的一半并保留它: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])
Run Code Online (Sandbox Code Playgroud)

您可以轻松地将其推广到没有对长度的列表,但这实际上取决于您在这种情况下要执行的操作.

话虽这么说,通过使用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)
Run Code Online (Sandbox Code Playgroud)

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

a d
b e
c f
Run Code Online (Sandbox Code Playgroud)

我刚刚做的是形式元组,zip功能分组列表的两半.

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

希望这可以帮助!


A. *_*hid 6

一个简单的方法是: D=["A","B","C"] print('\n'.join(D))