【问题标题】:Can you set list indexes as variables in the original list? [duplicate]您可以将列表索引设置为原始列表中的变量吗? [复制]
【发布时间】:2017-07-03 13:50:15
【问题描述】:

在将最大项目的位置与最后一个项目交换后,我正在尝试打印一个整数列表,每行一个项目。 交换项目后,它们仍然在原来的位置打印。

large = values[values.index(max(values))]
last = values[-1]

large, last = last, large

for i in values:
    print i

很抱歉,如果这个问题已经得到解答,我还没有找到它。

【问题讨论】:

  • @Chris_Rands 在发布我的问题之前我已经看过了,但我无法根据它解决我的问题。

标签: python python-2.7


【解决方案1】:

您可以通过以下方式到达它:

max_index = values.index(max(values))
values[max_index], values[-1]= values[-1], values[max_index]

当您输入large, last = last, large 时,您需要了解 large 和 last 是与列表值分开的变量。意味着即使你改变它们,列表也不会改变。

为了更新列表,您需要更新上面键入的列表中的值。

【讨论】:

  • 这不是一个列表理解,它是一个元组打包/解包,以惯用的方式交换数据。
  • @omri_saadon 这让你得到了更多的支持:)
  • @CoffeeCat ,是的,因为 large 和 last 指向的内存位置与列表中的值不同。它们具有相同的值,但更改 large 或 last 不会影响列表。你可以做农夫在他的回答中所做的事情(在列表中设置大和最后)。
  • @CoffeeCat 在变量中复制不会更改原始引用。为此,您必须直接解决列表,就像在这个好答案中所做的那样。
【解决方案2】:

您需要将 large 和 last 重新分配到您希望它们在列表中的位置。进行交换后添加:

values[values.index(max(values))] = large
values[-1] = last

【讨论】:

    猜你喜欢
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    相关资源
    最近更新 更多