2011-09-01 116 views
0

我最近才开始用Python进行编程(与以前的Ruby经验)。我试图建立一个,如果条件有两个条件:Python如果两个条件依赖于一个元组的条件

if not previous[1] and previous[0][0] == 5: 
      print "hello world" 

不过,我不断收到此错误:

<type 'exceptions.IndexError'>: tuple index out of range 

打印上的回报:((5, 1, 9, 23),)

我在做什么错?

我正在寻找类似他们的Ruby语法的东西:unless previous[1]

+1

您的'上一个'打印件有不匹配的圆括号。你有可能复制错了吗? – TorelTwiddler

+0

我做了,我只是改了它 – Spencer

+0

为什么在1元组内包装一个元组? – delnan

回答

6

((5, 1, 9, 23),),那么这是一个长度为1的元组。它只是元素 - 索引为0 - 是元组(5, 1, 9, 23)。它没有第二个元素具有索引1,所以that_tuple[1]产生了IndexError

你希望previous[1]会给你什么?

+0

所以如果我想测试前面[1]的存在,那么正确的语法是什么? – Spencer

+2

@Spencer,'如果len(previous)> 1'会测试,但我担心这可能不是你需要处理的。你在检查什么? *您在编写代码时期望'以前的[1]'是什么?*您最初是否试图检查存在? –

+0

在某些情况下,我期望它是另一个元组,在其他情况下,我希望它不存在。这个元组是从数据库调用中返回的,我想用两个返回的行处理实例,而不是返回一个行的实例。 – Spencer

0

previous”中只有一个元素。这就是为什么你得到一个IndexError当您尝试检索元素1.

+1

我将如何测试以前[1]的存在? – Spencer

+0

您可以使用len(previous)来确定之前的元素数量。 –

0

你的指数误差从previous[1]未来 - 以前是1元组......你需要previous[0]previous[0][0]

+0

我将如何测试以前[1]的存在? – Spencer