我有一个字母列表,希望能够像这样垂直显示它们:
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
最佳答案
那是因为你是 printing他们在不同的行。尽管您没有向我们提供足够的信息来说明您实际上希望如何打印它们,但我可以推断您希望在第一列上显示前半部分,在第二列上显示后半部分。
好吧,这不是那么容易,你需要提前考虑一下并意识到如果你计算列表的一半并保留它: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
,但如果两个可迭代对象的大小不同,则会填充默认值。
希望这对您有所帮助!
关于python - 如何垂直显示列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22289068/