python的slice切片操作

记录一下python的切片操作~~

a = [1,2,3,4,5,6,7,8]
#--------基础操作----------
print(a[:]) #输出全部序列  [1, 2, 3, 4, 5, 6, 7, 8]
print(a[:4]) #输出第0-3号,不包括4  [1, 2, 3, 4]
print(a[:-1])#不包括最后一个  [1, 2, 3, 4, 5, 6, 7]
print(a[4:])#从第4号往后  [5, 6, 7, 8]
print(a[-4:])#从倒数第四个往后 [5, 6, 7, 8]
print(a[3:-3])  #[4, 5]

#---------两个特殊用法-----------
print(a[-0:])  #这个要记住,得到原列表的一份拷贝 [1, 2, 3, 4, 5, 6, 7, 8]
print(a[:]) #得到的也是源列表的一份拷贝

#---------高级操作-----------
a[start:end:stride] #可以实现步进式切割,但是在单次切片操作内,不要同时指定start、end和stride,否则会使得代码可读性变差,如果一定要配合使用的话,可以先做步进式切片,然后在切割结果中做二次切割。
print(a[::2]) #输出偶数索引的值  [1, 3, 5, 7]
print(a[1::2]) #输出奇数索引的值  [2, 4, 6, 8]
print(a[::-1]) #采用-1做步进值,可以输出a的反转序列 [8, 7, 6, 5, 4, 3, 2, 1]
print(a[::-2]) #从尾部开始,每隔两个元素取一个 [8, 6, 4, 2]

python的多重循环写法(很神奇啊有木有):

a = [[1,2,3],[4,5,6],[7,8,9]]
flat =[x for row in a for x in row]
print (flat) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
squared = [[x**2 for x in row] for row in a]
print(squared)  #[[1, 4, 9], [16, 25, 36], [49, 64, 81]]

例子:

res = [11, 13, 17]
print(res[-1:])   #[17]
print(res[:-1])   #[11,13]

应该很好理解吧,[-1:]表示的就是从最后一个开始往后(其实就相当于只有最后一个元素);res[:-1]是从第一个开始,一直到最后一个的前面(不包括最后一个)

 
---------------------------------------------------2019.04.16更新------------------------------------------------
列表元素的筛选:

res = [1,2,3,4,500,800,10000,5]
res = [x for x in res if x<=100]
print(res) #输出:[1, 2, 3, 4, 5]
print([n+1 for n in res] # 所有元素加一)  #输出: [2, 3, 4, 5, 6]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们使用Python编程语言时,切片(slicing)操作是一种非常常见和有用的技术。它可以用于从字符串、列表、元组和其他可迭代对象中提取出指定的部分。 切片操作的基本语法是`[start:stop:step]`,其中: - `start`:切片的起始位置索引(包含)。 - `stop`:切片的结束位置索引(不包含)。 - `step`:切片的步长,默认为1(可选参数)。 下面是一些切片操作的示例: **字符串切片:** ```python string = "Hello, World!" slice1 = string[7:12] # 提取 "World" slice2 = string[:5] # 提取 "Hello" slice3 = string[7:] # 提取 "World!" slice4 = string[::2] # 提取 "Hlo ol!" ``` **列表切片:** ```python my_list = [1, 2, 3, 4, 5] slice1 = my_list[1:4] # 提取 [2, 3, 4] slice2 = my_list[:2] # 提取 [1, 2] slice3 = my_list[3:] # 提取 [4, 5] slice4 = my_list[::2] # 提取 [1, 3, 5] ``` **元组切片:** ```python my_tuple = (1, 2, 3, 4, 5) slice1 = my_tuple[1:4] # 提取 (2, 3, 4) slice2 = my_tuple[:2] # 提取 (1, 2) slice3 = my_tuple[3:] # 提取 (4, 5) slice4 = my_tuple[::2] # 提取 (1, 3, 5) ``` 需要注意的是,切片操作返回的结果将是一个新的对象,而不是原始对象的引用。这意味着对切片进行的修改不会影响原始对象。 切片操作还可以用于反向提取元素,例如`string[::-1]`将返回一个反转的字符串。这是一个方便的方法来翻转字符串或列表。 希望这个简单的切片操作讲解对你有帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值