用列表后退

2024-04-26 07:35:42 发布

您现在位置:Python中文网/ 问答频道 /正文

在第79页的“headfirstpython”中,他们展示了一个用一个列表反向移动并连接它的例子,但他们没有解释。你知道吗

我试着用不同的数字来区分每个数字的含义,以此来解决这个问题。你知道吗

不管怎样,首先是这本书的代码:

>>>book = "The Hitchhiker's Guide to the Galaxy"

>>>booklist = list(book)
['T', 'h', 'e', ' ', 'H', 'i', 't', 'c', 'h', 'h', 'i', 'k', 'e', 'r', "'", 's', ' ', 'G', 'u', 'i', 'd', 'e', ' ', 't', 'o', ' ', 't', 'h', 'e', ' ', 'G', 'a', 'l', 'a', 'x', 'y']

>>> ''.join(booklist)
"The Hitchhiker's Guide to the Galaxy"
>>> ''.join(booklist[4:14])
'Hitchhiker'
>>> ''.join(booklist[13:3:-1])
'rekihhctiH'

为什么这次是13:3而不是把4:14改成14:4。你知道吗

我试着分离start,stop中的数字代表什么值,但是没有任何意义

>>> ''.join(booklist[35:0:-1])
"yxalaG eht ot ediuG s'rekihhctiH eh"

“T”怎么了?如果我把-1放进去就不行了。你知道吗

以4:14继续前进,我从0,1,2,3,4开始计算“H”是第四个数字。但是“r”如果我这样算,我得到13。为什么不一致?你知道吗

以13:3倒过来的方式,我可以从“0”数到“r”等于13,但如何从“3”得到“H”?无论从“0”或“1”开始计数,“H”将分别为4或5。但事情似乎是这样的,因为一个字母(T)丢了。你知道吗

此外,在试图找出什么是什么范围,列表等,我查阅了另一本书“Python速成课程”第65页。Quote,“与range()函数一样,Python在指定的第二个索引之前停止一项”

players = ['1', '2', '3', '4', '5']
print(players[0:3])
['1', '2', '3']

第一个数字“0”是列表中的第一项,但第二个数字“3”是列表中的第三项。你知道吗

但在第61页,他们说:

for value in range(1, 5)
    print(value)
1
2
3
4

这不是一回事。你知道吗

在玩家列表[0:3]中,0是1,3是3

在范围(1,5)中,1是1,5是4

这是倒退!为什么在列表中,他们不是都从“0”开始计算?这是如此复杂和混乱,你会认为这些“高度重视”的初学者的书,我交叉引用将花费更多的时间在这样一个基本原则。以及“头先Python”如何提供反向切片。这是第二章。任何初学者都不可能理解这一点。你知道吗


Tags: theto列表range数字galaxyguideprint
1条回答
网友
1楼 · 发布于 2024-04-26 07:35:42

列表的每个元素都有一个索引,从0开始。你知道吗

在列表切片中:

[a:b:c]

a—初始索引(含)

b-最后索引(排除)

c-台阶(可以认为是跳跃。如果为负数,则从列表后面开始)

对于[4:14],它从索引4到索引13(14是它停止的地方),这就得到了Hitchhiker

对于[13:3:-1],由于-1,它从索引13向后移动到索引4(同样,3是它停止的地方)

对于[35:0:-1],同样相反,它从索引35到索引1。你知道吗

推荐阅读:https://docs.python.org/3/tutorial/introduction.html

相关问题 更多 >