【问题标题】:Iterate over list, keep some entities [closed]迭代列表,保留一些实体[关闭]
【发布时间】:2013-11-13 21:38:49
【问题描述】:

我正在尝试覆盖现有列表并跳过列表中value[i] = -1 所在的任何索引,并将该值保留在正确的索引处。

一个问题是 last_item 值似乎环绕到列表的末尾,有没有办法防止这种情况?否则,有没有更好的方法来做到这一点?这在所有逻辑上似乎都太笨拙了。

数据如下:

-1
 1
 2
 3
-1
 1
 2
 3

我试图让它看起来像这样:

-1
 1
 2
 3
-1
 4
 5...

编辑 我修改了 Alex 在下面发布的代码,现在运行良好。这是我使用的代码:

count = 1
for i range(len(my_list)):
    if my_list[i] == -1:
        new_list.append(-1)
    else:
        my_list[i] = count
        count += 1
        new_list.append(my_list[i])

【问题讨论】:

  • 你能举一个预期输入和输出的例子吗?
  • 你不是在修改数据,你只是在修改next_item
  • 但是,很难说你在做什么。欢迎提供 I/O 示例!
  • 您也没有检查索引 i 处的值是否为 -1,而是检查 i 本身。这没有多大意义,因为您以声明方式以 i=-1 开始循环

标签: python list sanity-check


【解决方案1】:

在开始编写此代码之前,您可能想要复习一下 Python 列表、Python 循环和迭代/索引。以下是一些您可能会觉得有用的页面

An Intro to Python Lists

For Loops in Python

Looping with Lists in Python

另外注意,仅仅因为你设置一个变量等于列表中的一个元素,你不能指望那个列表中的元素在你改变变量时改变。这就像说,我要复制这个 cookie 的外观和味道,就像另一个 cookie 一样。然后,如果你吃第二块饼干(你做的那个),第一个饼干仍然存在,直到你进去吃那个饼干。

对于迭代变量 i 也是如此。当您检查 i==-1 时,您实际上只是在说“这是我循环中的第一个循环吗?”因为你从-1开始循环。当您浏览那些循环文章时,这一切都应该更有意义。

太棒了,输入/输出数据有很大帮助。现在更有意义了。

这个怎么样:

count = 1
for i range(len(my_list)):
    if my_list[i] = -1:
        continue
    else:
        my_list[i] = count
        count++

my_list 是输入列表

我不是 100% 理解这里的问题,但我想我理解。鉴于您提供的输入,此代码应该为您提供所需的输出。高温

【讨论】:

  • 这对你有用吗?
  • 确实是谢谢。我更新了我的帖子以反映这些变化。我的实现很愚蠢,但现在更有意义了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2021-02-14
  • 2023-02-22
  • 2014-02-12
  • 2015-01-31
  • 2015-10-28
  • 1970-01-01
相关资源
最近更新 更多