考虑这个列表:
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,我会收到错误。
感谢。
答案 0 :(得分:1)
range
从0
开始,因此第一次通过测试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