【问题标题】:Appending "," to every item in a List of integers将“,”附加到整数列表中的每个项目
【发布时间】:2019-05-12 16:29:10
【问题描述】:

我想在整数列表中的每个项目上附加“,”,然后是项目索引。

我知道在我这样做之前我需要将整数转换为字符串,但即使我这样做了,它也不起作用:

(我使用 Python 3.7.3)

for element in mylist:
    element = str(element)
    element = "{0},".format(element)
    element = element + mylist.index(element)

我想要什么:

mylist = ["97,0", "569,1", "39,2", "230,3",....]

【问题讨论】:

  • 您不能以这种方式更改列表值。您需要为此使用list comprehension["{},{}".format(str(v), i) for i, v in enumerate(mylist)]

标签: python python-3.x append iteration


【解决方案1】:

可能有人可以链接到一个重复的问题,但我还不知道如何解决这个问题。

您想要list comprehensionsenumerate function

new_list = ["{0},{1}".format(item, index) for (index, item) in enumerate(old_list)]

【讨论】:

  • 您忘记将enumerate 放入列表理解中。
  • f-strings 使这个更漂亮,因为他在 3.7 中。 new_list = [f"{item},{index}" for index, item in enumerate(old_list)]
  • 他已经在问题中得到了 "".format(),并且在 PHP 中工作让我不喜欢 code inside strings 风格。
  • 好吧,你可以把一个 PHP 程序员带到水边,但你不能让他喝水;)。我的孩子——我已经用你的语言花了整整 8 个专业时间,然后我跑到了山上:D
【解决方案2】:

如果您绝对需要就地更改列表,那么您可以遍历该列表的 副本 并执行此操作。

for i, val in enumerate(mylist[:]):  # note the empty slice there -- that creates a whole copy!
    mylist[i] = f"{val},{i}"

从技术上讲,由于您没有添加或删除元素,因此您可以在没有该副本的情况下执行此操作

for i, val in enumerate(mylist):
    mylist[i] = f"{val},{i}"

但如果不完全了解您可以对您正在迭代的列表做什么和不能做什么,这是一个危险的习惯。如果您的目标是这样做但也删除第 10 个元素(或等),您将不得不制作一个副本。同样,如果您想在值97 之前插入一个新元素,等等。

作为一般的最佳实践,您应该尽可能避免改变列表,并按照ShapeOfMatter's answer 中的建议使用列表推导生成一个新列表

【讨论】:

    【解决方案3】:
    mylist = [97,0, 569,1, 39,2, 230,3]
    for items in mylist:
        (str(items))
        print('\"{0}\"'.format(items))
    

    这是您问题的解决方案,如果我理解正确,您想为列表“”中的每个项目添加。

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 2021-03-17
      • 1970-01-01
      • 2021-12-22
      • 2022-01-25
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      相关资源
      最近更新 更多