0

考虑这个列表:

test = ["stas", "doug", "saman", "movie"]
for q in range(len(test)):
    PreGroup = None
    if (q > 0):
        PreGroup = test[q-1]
    print PreGroup

我怎样才能摆脱 NONE?作为第一个输出?我需要在那里设置 q-1,或者至少我认为,因为我需要让 PreGroup 成为当前索引之前的一个索引。

我的 PreGroup 不能有 None,因为我稍后会在我的代码中传递它,如果它得到 NONE,我会得到一个错误。

谢谢。

4

4 回答 4

1

range从 开始0,因此第一次通过测试if (q > 0)失败,并PreGroup停留在None

作为旁注,您不需要在if测试周围加上括号。

于 2013-09-12T22:47:31.347 回答
1

您并没有很清楚地表达您想要什么,但我想您所说的是在循环的每次迭代期间您都想要一个有效的当前组test[q]和一个有效的先前组。test[q-1]在这种情况下,您可以使用range(1, len(test))make qstart at1而不是0.

或者,您可以在不使用此循环的任何索引的情况下执行此操作:

for (pre_group, group) in zip(test, test[1:]):
    print pre_group, group
于 2013-09-12T22:56:48.300 回答
1

如果为 0,您不想设置PreGroup(设置为 None 以外的其他值)q。这很好,但是您打印PreGroup它是否已设置的值。如果你也把它放在print里面if,它只会PreGroup在设置为时打印test[q-1]。然后您也可以删除该PreGroup = None行,因为PreGroup不需要存在于if.

不过,解决问题的更好方法是简单地让循环从 1 而不是 0 开始。这样您甚至不必检查是否q为 0。您可以使用range(1, len(test)).

于 2013-09-12T22:53:38.497 回答
-2

也许是这样的

test = ["stas", "doug", "saman", "movie"]
for q in test:
    PreGroup = None
    q = test.index(q)
    if q > 0:
        PreGroup = test[q]
    print PreGroup
于 2013-09-12T22:53:11.233 回答