【问题标题】:Why is my python list vertical?为什么我的 python 列表是垂直的?
【发布时间】:2016-10-25 22:39:56
【问题描述】:

使用 python 3 和 jupyter notebook(我必须,上课)。

我有一个函数,它通过循环多次并从另一个列表中附加一个随机选择的元素来创建一个列表。但是当我使用该函数时,它给出的列表会在新行上显示每个元素。为什么?可以改吗?

代码:

def create_board(length=32,seed=0,types=2):
"""
Creates a one-dimensional game board of randomly placed
letters, using as many as are specified.
"""

    if types>26:
        print("No, try a number smaller than 27.")

    else:    

        board = []
        letters = ["A","B","C","D","E","F","G","H","I","J","K","L","M",
                  "N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]


        for i in range(length):
            val=random.randint(0,(types-1))
            board.append(letters[val])


        return board

然后两个

    print(create_board())

    create_board()
    board

输出创建的列表,但每个元素都换行:

['B',

'B',

'A',

'B',

'A',

等等。

【问题讨论】:

  • 这只是 Jupyter 试图以更具可读性的方式显示列表(但没有成功)。无论 Jupyter 选择在多少行上显示元素,列表都是相同的。
  • 从 Linux 命令行运行它,我得到了一个不错的水平列表。
  • 你可以把它变成像 print(', '.join(create_board())) 这样的字符串

标签: python list function python-3.x jupyter-notebook


【解决方案1】:

这是由pretty printing 引起的,它在 IPython 会话中默认打开。这可以在配置选项中关闭,或者在会话期间通过运行pprint 魔法来关闭:

In [12]: %pprint
Pretty printing has been turned OFF

In [13]: %pprint
Pretty printing has been turned ON

In [14]: %pprint
Pretty printing has been turned OFF

【讨论】:

  • 这正是我想要的!谢谢!
【解决方案2】:

对不起,也许我没听懂,但如果目标是在一行上打印列表的所有元素,不管算法如何,可能足以让你加入列表中的元素?

所以:

print(",".join(create_board()))

如果我们真的很偏执:

print(",".join([str(i) for i in create_board()]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    相关资源
    最近更新 更多