0

I am trying to get a value from a list using for each:

for Therepot, member in enumerate(pots[0]):
        TherePotValue = Therepot

pots[0] holds something like [4, 6, 2, 1, 8, 9]

Edit


To return the value i should point my variable TherePotValue to member and not the TherePot witch is the index.

Running a test:

TherePot = 0 , Member = 4

TherePot = 1 , Member = 6

TherePot = 2 , Member = 2

TherePot = 3 , Member = 1

TherePot = 4 , Member = 8

TherePot = 5 , Member = 9

4

3 回答 3

2

我认为这些示例将帮助您做您想做的事情:

lst = pots[0]

# solution using a for loop
for i, member in enumerate(lst):
    # i is the position in the list
    # member is the data item from the list
    assert lst[i] == member  # cannot ever fail
    if member == the_one_we_want:
        break  # exit loop, variables i and member are set
else:
    # the_one_we_want was never found
    i = -1  # signal that we never found it

# solution using .index() method function on a list
try:
    i = lst.index(the_one_we_want)
except ValueError:
    # the_one_we_want was not found in lst
    i = -1  # signal that we never found it

编辑:这些评论让我意识到循环else中的内容for可能令人困惑。

在 Python 中,for循环可以有自己的else情况。Raymond Hettinger 评论说,他希望关键字是这样when_no_break的,因为您唯一一次使用它else是与break关键字一起使用!

如果for循环提前退出break,则else代码不会运行。但是,如果for循环一直运行到最后并且break从未发生过,那么else代码会在最后运行。Nick Coghlan 将此称为“完成子句”,以将其与if语句中的“条件 else”区分开来。

https://ncoghlan_devs-python-notes.readthedocs.org/en/latest/python_concepts/break_else.html

不幸的是,它else出现在if声明之后,因为这可能会令人困惑。那else与那无关if;它与for循环一起使用,这就是它缩进的原因。(我确实喜欢在 Python 中,当它们放在一起时,你不得不将它们排成一行。)

于 2013-05-13T21:38:54.177 回答
1

pots[0]实际上具有您认为的价值非常重要。考虑以下代码:

>>> pots = [[4, 6, 2, 1, 8, 9]]
>>> TherePotValue = 0
>>> for Therepot, member in enumerate(pots[0]):
        TherePotValue = Therepot
        print "(",Therepot,")", member

这会产生:

( 0 ) 4
( 1 ) 6
( 2 ) 2
( 3 ) 1
( 4 ) 8
( 5 ) 9
>>> print TherePotValue
5
>>> 

如果你看到0我只能假设它pots[0]只有一个元素。

于 2013-05-13T21:37:05.643 回答
0

您的代码相当于:

    TherePotValue = len(pots[0]) - 1

所以除了你在最后一次迭代中所做的之外,你没有对循环做任何事情。总是得到 0 表明 pos[0] 的长度为 1。

于 2013-05-13T21:34:24.347 回答