我在理解会发生什么情况时出现问题,当我在切片的情况下将负值设置为步骤时。我知道[::-1]
反转一个字符串。我想知道它分配什么价值开始和停止获得相反。了解负面切片步骤值
我认为这将是0结束到字符串。并试图
f="foobar"
f[0:5:-1]--->
它给了我无输出。为什么?
我已经阅读开始不应该通过停止。在负阶值的情况下是否也是如此?
任何人都可以帮助我清除我的疑问。
我在理解会发生什么情况时出现问题,当我在切片的情况下将负值设置为步骤时。我知道[::-1]
反转一个字符串。我想知道它分配什么价值开始和停止获得相反。了解负面切片步骤值
我认为这将是0结束到字符串。并试图
f="foobar"
f[0:5:-1]--->
它给了我无输出。为什么?
我已经阅读开始不应该通过停止。在负阶值的情况下是否也是如此?
任何人都可以帮助我清除我的疑问。
f[0:5:-1]
不会产生任何输出的原因是因为你从0开始,并试图倒数到5.这是不可能的,所以Python返回一个空字符串。
取而代之,你想要f[5:0:-1]
,它返回字符串"raboo"
。
请注意,该字符串不包含f
字符。要做到这一点,你需要f[5::-1]
,它返回字符串"raboof"
。
你还问:
我已阅读开始不应该通过停止。在负阶值的情况下是否也是如此?
不,这是不正确的。通常,start
值不应超过stop
的值,但仅当该步骤为肯定时。如果步骤是否定的,则反过来是正确的。必要时,start
必须高于stop
的值。
,它指定停止的值。它是-1 – shubendrak
由于缺少停止值,因此将赋值为None。因此,当你执行'f [:]'时,这实际上是做'f [None:None]'的捷径。无可否认,这乍一看有点令人困惑,但确实有点意义。如果停止值是'-1',那么这意味着你要切片但不包括最后一个字符。你需要一些价值来表明“切到底”,在这种情况下没有数字真的有意义。 – Michael0x2a
哦,我想f [:]意思是f [0:结束字符串]。感谢一吨清除我的疑问 – shubendrak
你可以这样认为:
与f[0:5]
,0
是起始位置和5-1
末位置。
与f[0:5:-1]
,5
是开始位置和0+1
的结束位置。
切片开始位置必须低于结束位置。 如果不是这种情况,结果是空字符串。因此f[0:5:-1]
返回一个空字符串。
由于负的步幅从起始值开始; 0 - 1为-1,在0 - 5的范围之外。从[5 :: - 1]开始。 –
@Martijn回答并没有解释很多有关负阶跃值的情况。在f [5 :: - 1]的情况下为 – shubendrak