为什么我在列表中没有?

时间:2013-09-12 22:45:52

标签: python list

考虑这个列表:

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

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

我的PreGroup必须没有None,因为我稍后会在我的代码中传递它,如果它变为NONE,我会收到错误。

感谢。

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

如果PreGroup为0,您不想设置q(除了None之外的其他内容)。没关系,但是然后打印PreGroup的值是否已经是否设定。如果您将print放在if内,则仅在PreGroup设置为test[q-1]时才会打印。您也可以删除PreGroup = None行,因为PreGroup不需要存在于if之外。

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

答案 2 :(得分:1)

你没有非常清楚地表达你想要的是什么,但我想你所说的是你想要一个有效的当前组test[q]和一个有效的前一组test[q-1]循环的每次迭代。在这种情况下,您可以使用range(1, len(test))q而不是1开始0

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

for (pre_group, group) in zip(test, test[1:]):
    print pre_group, group

答案 3 :(得分:-2)

也许是这样的

test = ["stas", "doug", "saman", "movie"]
for q in test:
    PreGroup = None
    q = test.index(q)
    if q > 0:
        PreGroup = test[q]
    print PreGroup