x 1 python_区分 Python [-x], [-x:], [:], [:-x], [::-1], [x::-1]

区分Python [-x], [-x:], [:], [:-x], [::-1], [x::-1]

[-x] 表示 列表的倒数第 x 个元素

numbers = [1, 2, 3, 4, 5, 6]

print(numbers[-1]) # 倒数第一个元素 6

print(numbers[-2]) # 倒数第二个元素 5

[-x:] 表示 最后 x 个元素构成的切片

numbers = [1, 2, 3, 4, 5, 6]

print(numbers[-1:]) # 最后一个元素构成的切片 [6]

print(numbers[-2:]) # 最后两个元素构成的切片 [5, 6]

[:] 表示 整个列表(用于复制列表)

numbers = [1, 2, 3, 4, 5, 6]

new_numbers = numbers[:]

print(new_numbers) # 完整列表[1,2,3,4,5,6]

[:-x] 表示 除了最后 x 个元素构成的切片

numbers = [1, 2, 3, 4, 5, 6]

print(numbers[:-1]) # 除了最后一个元素构成的切片 [1, 2, 3, 4, 5]

print(numbers[:-2]) # 除了最后两个元素构成的切片 [1, 2, 3, 4]

[::-1] 表示 列表翻转

numbers = [1, 2, 3, 4, 5, 6]

print(numbers[::-1]) # 列表翻转 [6, 5, 4, 3, 2, 1]

详细原因:

列表的使用规则:

Sequence[start : end : step]

step 步长的默认值为1

numbers = [1, 2, 3, 4, 5, 6]

print(numbers[::])

# 输出整个列表 [1, 2, 3, 4, 5, 6]

print(numbers[::2])

# 以步长为 2 输出列表 [1, 3, 5]

print(numbers[1::2])

# 从下标为 1 开始以步长为 2 输出列表 [2, 4, 6]

那么如果将列表的步长设置为为 负数,就会起到列表翻转的功能

numbers = [1, 2, 3, 4, 5, 6]

print(numbers[::-1])

# 步长为 -1 反着走 输出 [6, 5, 4, 3, 2, 1]

print(numbers[::-2])

# 输出 [6, 4, 2]

print(numbers[::-3])

# 输出 [6,3]

注意: 当把步长设置为 -1 时, start 和 end 的顺序也会发生改变

numbers = [1, 2, 3, 4, 5, 6]

print(numbers[2:5:-1])

# 输出的结果是 [] 因为 start 与 end 的顺序反了

# 当步长为 -1 即反向走时,应该从下标大的走向下标小的

print(numbers[5:2:-1])

# 正确输出 [6, 5, 4]

print(numbers[2:5][::-1])

# 正确输出 [6, 5, 4]

# 第二种输出 相当于先复制一份 numbers 的切片,然后再对切片进行倒置

[x::-1] 表示 列表从下标 x 元素开始进行翻转 ( 注意是下标为 x ,而不是第 x 个元素) ( 向前翻转 )

numbers = [1, 2, 3, 4, 5, 6]

print(numbers[2::-1]) # 从下标为 2 开始翻转 [3, 2, 1]

print(numbers[3::-1]) # 从下标为 3 开始翻转 [4, 3, 2, 1]

原文:https://www.cnblogs.com/AlanHe/p/12334757.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值