Python中的负索引

Python中的负索引,python,list,Python,List,我名单上有一张唱片 >>> bob =['bob smith',42,30000,'software'] 我正试图从这张唱片中找到姓氏“史密斯” 我使用以下命令: >>> bob[0].split()[1] >>> bob[0].split()[-1] 它为我提供了“史密斯” 但我所指的书使用以下命令: >>> bob[0].split()[1] >>> bob[0].split()[-1] 它也

我名单上有一张唱片

>>> bob =['bob smith',42,30000,'software']
我正试图从这张唱片中找到姓氏“史密斯”

我使用以下命令:

>>> bob[0].split()[1]
>>> bob[0].split()[-1]
它为我提供了“史密斯”

但我所指的书使用以下命令:

>>> bob[0].split()[1]
>>> bob[0].split()[-1]
它也给了我同样的结果“smith”


为什么索引[1]和[-1]提供相同的结果?

正索引从列表的开头开始计数,负索引从列表的结尾开始计数

即:

bob[0].split()[0] == 'bob'
bob[0].split()[1] == 'smith'
bob[0].split()[-1] == 'smith'
bob[0].split()[-2] == 'bob'
现在假设你有一个中间名的人:

jane =['jane elizabeth smith', 42, 30000, 'software']
jane[0].split()[1]
将给出jane的中间名
'elizabeth'
,而
jane[0].split()[-1]
将给出她的姓
'smith'

说了这一切

  • 不要假设名称由两个组件组成
  • 不要假定某个名称的形式相同
  • 不要假设一个名字是一个单词
  • 不要假定姓氏是一个单词
  • 不要做任何假设

有关您可能错误的更详尽的列表,请参见正面索引从列表开始计数,负面索引从列表结束计数

即:

bob[0].split()[0] == 'bob'
bob[0].split()[1] == 'smith'
bob[0].split()[-1] == 'smith'
bob[0].split()[-2] == 'bob'
现在假设你有一个中间名的人:

jane =['jane elizabeth smith', 42, 30000, 'software']
jane[0].split()[1]
将给出jane的中间名
'elizabeth'
,而
jane[0].split()[-1]
将给出她的姓
'smith'

说了这一切

  • 不要假设名称由两个组件组成
  • 不要假定某个名称的形式相同
  • 不要假设一个名字是一个单词
  • 不要假定姓氏是一个单词
  • 不要做任何假设
有关可能错误的更详尽的列表,请参见

Python列表可以使用负索引进行“反向索引”<代码>-1表示最后一个元素,
-2
表示倒数第二个元素,依此类推。恰好在长度为2的列表中,最后一个元素也是索引
1
处的元素

你的书建议使用
-1
,因为从逻辑的角度来看它更合适。您不希望项目本身位于索引
1
,而是希望列表的最后一个元素,即姓氏。例如,如果还包括一个中间名呢?然后使用
1
索引将不起作用,而
-1
索引将起作用。

Python列表可以使用负索引“反向索引”<代码>-1表示最后一个元素,
-2
表示倒数第二个元素,依此类推。恰好在长度为2的列表中,最后一个元素也是索引
1
处的元素


你的书建议使用
-1
,因为从逻辑的角度来看它更合适。您不希望项目本身位于索引
1
,而是希望列表的最后一个元素,即姓氏。例如,如果还包括一个中间名呢?然后使用索引
1
将不起作用,而索引
-1
将起作用。

因为在这种情况下,您要拆分的列表是
['adam','smith']
。因此,
bob[0].split()[1]
将返回第二个元素(不要忘记列表索引是基于0的),而
bob[0].split()[-1]
将返回最后一个元素

因为列表的大小是2,所以第二个(索引
1
)和最后一个(索引
-1
)是相同的


通常,如果您有一个列表
my_list
,那么
my_list[len(my_list)-1]==my_list[-1]
,因为在这种情况下,您要拆分的列表是
['adam','smith']
。因此,
bob[0].split()[1]
将返回第二个元素(不要忘记列表索引是基于0的),而
bob[0].split()[-1]
将返回最后一个元素

因为列表的大小是2,所以第二个(索引
1
)和最后一个(索引
-1
)是相同的

通常,如果您有一个列表
my_list
,那么
my_list[len(my_list)-1]==my_list[-1]
这是您的输入

In [73]: bob
Out[73]: ['bob smith', 42, 30000, 'software']
这是bob[0]给您的

In [74]: bob[0]
Out[74]: 'bob smith'
正如您所看到的,bob[0]只有两个元素,因此1给您第二个元素,-1给您最后一个相同的元素,这是您的输入

In [73]: bob
Out[73]: ['bob smith', 42, 30000, 'software']
这是bob[0]给您的

In [74]: bob[0]
Out[74]: 'bob smith'

正如您所见,bob[0]只有两个元素,因此1给您第二个元素,-1给您最后一个元素,这是相同的

与流行的观点相反,使用-1表示姓氏是不符合逻辑的,甚至是不正确的()与流行的观点相反,使用-1表示姓氏是不符合逻辑的,甚至是不正确的()