【问题标题】:How do I print nth elements in the list simultaneously?如何同时打印列表中的第 n 个元素?
【发布时间】:2023-03-19 03:21:01
【问题描述】:
l = ["a","1","b","2","c","3",]

我正在尝试同时打印上面列表中的项目。在每个第 n 个元素之前添加不同的文本。即 0,2,4 元素之前的“字母”和 1,3,5 元素之前的“数字”。

预期输出是:

  • 字母a
  • 1 号
  • 字母 b
  • 2号
  • 字母 c
  • 数字 3'''

我尝试的是:

很多谷歌搜索和应用解决方案。了解print(*l, sep="\n") 以及如何在打印前格式化输出。我尝试了enumerate,但这真的很难掌握,我尝试了“middle_index”代码并通过“step::2”将列表分成两部分,然后打印两次等。它不起作用..请让我知道这是怎么回事可以做到。谢谢你。

【问题讨论】:

  • 同时是什么意思? print(*list, sep="\n") 怎么样,但你真的不应该使用与 python 内置名称冲突的变量名,永远不要将你的列表称为列表。因为那是一个内置关键字
  • print(*list,sep='\n')?
  • 我想为第 0、第 2 和第 4 个元素添加一个字符串,为第 1、第 3 和第 5 个元素添加另一个字符串。 print(*list) 和 print(l,sep= "\n") 有效,但不适用于打印前的格式化(为第 n 个元素添加文本)..
  • @PirateHat 请用示例更新您的问题,以便我们为您提供帮助
  • sry,我会记住不要那样使用变量名。 print(*list,sep='\n') 这可行但不完全。 ' 字母 a 数字 1 字母 b

标签: python python-3.x loops printing formatting


【解决方案1】:

你可以这样做:

lst = ["a","1","b","2","c","3"]
s1 = "alphabet"
s2 = "number"
sep = " " # You can change it to "\n"

print(*(f"{s1 if i % 2 == 0 else s2} {x}" for i, x in enumerate(lst)), sep=sep)

输出:

alphabet a number 1 alphabet b number 2 alphabet c number 3

您只需要根据需要更改分隔符。

【讨论】:

  • 也可以只解包列表,以便将所有元素传递给打印,并且打印的默认分隔符无论如何都是空格。 print(*lst)
  • 非常感谢@Riccardo Bucco,这很有效..我也学到了一些新东西:)..
  • 非常感谢 Chris Doyle 和 Ch3ster.. :)
【解决方案2】:

您需要测试每个元素的索引并在打印值之前添加正确的附加输出:

l = ["a","1","b","2","c","3",]

for idx,e in enumerate(l):
    print("alphabet" if not idx%2 else "number", e)

得到

alphabet a
number 1
alphabet b
number 2
alphabet c
number 3

%2 表示 idx%2 要么返回 0(对于索引 0,2,4,6,...)或 1(对于索引 1,3,5,...) - @ 987654330@ 是假的,并在 print 语句中的三元组中使用,以在您从 l 获取的 element 前面打印正确的内容。

【讨论】:

    猜你喜欢
    • 2023-02-03
    • 2010-10-27
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多