【问题标题】:How to print all of the elements in a list如何打印列表中的所有元素
【发布时间】:2011-07-25 22:52:29
【问题描述】:

我需要能够在不带括号或逗号的情况下打印随机选择的列表中的所有元素。我尝试使用“+”运算符打印每个元素,但它引发了一个关于无法将列表转换为字符串的错误。这是我现在的代码:

t1 = ["rock", 80, 1,2,1]
t2 = ["carpet", 75, 2, 2, 1]
t3 = ["lava", 1000, 1, 1, 1]
t4 = ["rock", 90, 2, 1, 1]
Tiles = [t1, t2, t3, t4]
print(random.choice(Tiles)[0] + [1] + [2] + [3] + [4])

【问题讨论】:

    标签: list printing python-3.x element


    【解决方案1】:

    print 函数可以接受多个参数。您不想尝试将所有内容粘在一起,因为它们属于不同的类型 - 只需让 Python 将它们按顺序打印出来即可。

    title = random.choice(Titles)
    print(title[0], title[1], title[2], title[3], title[4])
    

    当然,这有点笨拙,并不能真正反映意图。幸运的是,有一个快捷方式可以让我们将列表中的所有项目作为参数提供给函数:

    title = random.choice(Titles)
    print(*title)
    

    或者,因为我们不再需要这个名字,所以:

    print(*random.choice(Titles))
    

    【讨论】:

    • 好吧,我想试着做一行。你的方法也很好,它是迄今为止最简单的,所以我可能会改变我的程序来使用你的方法。谢谢。
    【解决方案2】:

    我认为这可能更接近你想要的:

    print ' '.join(map(unicode, random.choice(Tiles)))
    

    【讨论】:

    • 这引发了与字符串和整数冲突有关的其他错误。
    • @Zizma - 如果你愿意,你可以强制使用这些值......我会稍微修改一下答案。
    • ' '.join(str(x) for x in random.choice(Tiles))
    • @g.d.d.c 这适用于 Python 2.x,但不适用于我正在使用的 3.x。 :(
    • @Zizma - 抱歉,我默认使用 2.x 语法 - 我们内部尚未过渡到 3.x。听起来你现在可以走了。 :)
    【解决方案3】:

    您应该将随机选择的结果保存在一个变量中,然后遍历其成员并按顺序打印。

    【讨论】:

    • 这行得通,但是您知道一种方法可以在一行中完成所有操作吗?
    • 何必写成一行?
    • 我想我不需要。谢谢。
    【解决方案4】:
    >>> import random
    >>> t1 = ["rock", 80, 1,2,1]
    >>> t2 = ["carpet", 75, 2, 2, 1]
    >>> t3 = ["lava", 1000, 1, 1, 1]
    >>> t4 = ["rock", 90, 2, 1, 1]
    >>> Tiles = [t1, t2, t3, t4]
    >>> print(random.choice(Titles)[0])
    "rock"
    

    【讨论】:

    • 这和我说的我想做的完全不一样。
    【解决方案5】:

    问题是你有一堆不同类型的元素并且想要打印它们。您应该做的是制作一串您想要的数据并打印出来。

    类似这样的:

    >>> import random
    >>> tiles = [
    ...     ["rock", 80, 1,2,1],
    ...     ["carpet", 75, 2, 2, 1],
    ...     ["lava", 1000, 1, 1, 1],
    ...     ["rock", 90, 2, 1, 1],
    ... ]
    >>> tile = random.choice(tiles)
    >>> print("The random tile is '{0}', with the values {1}, {2}, {3} and {4}".format(*tile))
    The random tile is 'rock', with the values 80, 1, 2 and 1
    

    其他任何东西都几乎只适合调试。喜欢:

    >>> print(*tile)
    rock 80 1 2 1
    

    【讨论】:

      【解决方案6】:
      print(repr(random.choice(Tiles))[1:-1].replace(',','  '))
      

      【讨论】:

      • 我真的很想了解在我的回答中什么值得反对。我的回答有什么问题??
      • Karl Knechtel 的回答比我的要好,因为它完美地利用了 print() 是 Python 3 中的一个函数这一事实。即使我无法在 Python 中测试,我也应该考虑这个解决方案3 我没有安装。但是,我认为我的回答没有错,而且我发现在没有任何解释的情况下投反对票是相当奇怪的
      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      相关资源
      最近更新 更多