Python:List.Index(x),在位置0之后切片列表时找不到值

Python:List.Index(x),在位置0之后切片列表时找不到值,python,string,python-2.7,list,slice,Python,String,Python 2.7,List,Slice,为什么在位置0之后切片索引时,list.index(x)找不到匹配项 此语句正确地将关闭顺序设置为0 closed_order = trades[:][0].index(strategy) 但是下面的语句找不到该值。我希望它能回来 closed_order = trades[2:][0].index(strategy) if语句也能正确地找到匹配项 整个代码如下所示 from decimal import Decimal, getcontext getcontext().prec = 2

为什么在位置0之后切片索引时,list.index(x)找不到匹配项

此语句正确地将关闭顺序设置为0

closed_order = trades[:][0].index(strategy)
但是下面的语句找不到该值。我希望它能回来

closed_order = trades[2:][0].index(strategy)
if语句也能正确地找到匹配项

整个代码如下所示

from decimal import Decimal, getcontext
getcontext().prec = 2

trades = [['shp_str_sl_17_(Clsd Prft)', '12/18/11', Decimal('4.66')],
          ['shp_str_sl_17_(Re)', '12/18/11', Decimal('4.61')],
          ['shp_str_sl_17_(Re)', '1/22/12', Decimal('5.62')],
          ['shp_str_sl_17_(OBV X^)', '1/29/12', Decimal('6.63')],
          ['shp_str_sl_17_(Clsd Prft)', '3/11/12', Decimal('6.84')],
          ['shp_str_sl_17_(UDR 0^)', '7/29/12', Decimal('5.03')],
          ['shp_str_sl_17_(Clsd Prft)', '10/28/12', Decimal('5.60')]]

strategy = 'shp_str_sl_17_(Clsd Prft)'
if trades[4][0] == strategy:
        print "match found"

closed_order = trades[2:][0].index(strategy)
print "closed_order=",closed_order
我是Python新手,非常感谢您的帮助。 非常感谢。 顺致敬意, Sanjay的意思是“从2开始给我元素”<代码>[0]表示“给我第一个元素”。因此
交易[2:[0]
的意思是“从2开始给我元素中的第一个元素”——这与
交易[2]
的意思相同。不包含您的
策略

同样,在第一个示例中,
交易[:][0]
交易[0]
相同。这恰好适用于您的示例,因为
交易[0]
确实包含您的目标策略

不清楚您认为
交易[2:][0]
有什么作用,但您可能认为
[0]
的意思是“给我每个子列表的第一个元素”。但这不是它的意思。如果您想这样做,您必须使用列表:

[sub_list[0] for sub_list in trades[2:]].index(strategy)
然而,这不会给你4,而是2,因为通过切片
交易
你已经改变了新列表的起始位置。以前位于位置4的元素现在位于位置2,因为您在开始时切掉了2个元素。

[2://code>表示“从2开始给我元素”<代码>[0]
表示“给我第一个元素”。因此
交易[2:[0]
的意思是“从2开始给我元素中的第一个元素”——这与
交易[2]
的意思相同。不包含您的
策略

同样,在第一个示例中,
交易[:][0]
交易[0]
相同。这恰好适用于您的示例,因为
交易[0]
确实包含您的目标策略

不清楚您认为
交易[2:][0]
有什么作用,但您可能认为
[0]
的意思是“给我每个子列表的第一个元素”。但这不是它的意思。如果您想这样做,您必须使用列表:

[sub_list[0] for sub_list in trades[2:]].index(strategy)

然而,这不会给你4,而是2,因为通过切片
交易
你已经改变了新列表的起始位置。以前位于位置4的元素现在位于位置2,因为您在开始时将2个元素切掉。

您应该查看值
trades[2:[0]
(例如,打印它,或者使用交互式python或ipython shell)。这是你期望的吗?你期望
交易[2:[0]
给你什么?为什么你期望
交易[2:[0]。索引(策略)
给你4分?@WarrenWeckesser是的!这一点和布伦巴恩的回答有助于澄清[2:[0]的含义。Thx.您应该查看值
交易[2:[0]
(例如,打印它,或使用交互式python或ipython shell)。这是你期望的吗?你期望
交易[2:[0]
给你什么?为什么你期望
交易[2:[0]。索引(策略)
给你4分?@WarrenWeckesser是的!这一点和布伦巴恩的回答有助于澄清[2:[0]的含义。谢谢你花时间回答我的问题。你应该明白我的意图,这是相当精明的。谢谢你花时间回答我的问题。你应该明白我的意图,这是相当精明的。