python的slice切片操作

本文详细介绍了Python中列表切片的基本操作、特殊用法及高级技巧,包括步进式切割、列表反转、元素筛选等,并展示了如何通过列表推导式进行多重循环和元素处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下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]
### Python 字典的切片操作Python 中,字典本身并不支持直接通过索引范围进行切片操作,因为字典是一种无序的数据结构(尽管从 Python 3.7 开始,默认情况下字典保持插入顺序)。为了实现对字典的切片操作,可以通过提取字典中的键并对其进行切片来间接完成这一需求。 以下是基于提供的引用内容以及专业知识的一种实现方式: #### 方法描述 要对字典进行切片操作,可以按照以下逻辑执行: 1. 提取字典的所有键。 2. 对这些键进行切片操作。 3. 使用切片后的键集合重新构建一个新的子字典。 这种方法的核心在于利用列表切片功能处理字典的键集,并将其映射回原始字典值[^3]。 #### 实现代码 下面是一个具体的实现示例: ```python def dict_slice(adict, start, end): """ 对字典进行切片操作 参数: adict (dict): 原始字典 start (int): 切片起始位置 end (int): 切片结束位置 返回: dict: 新的切片子字典 """ keys = list(adict.keys()) # 将字典的键转换为列表 sliced_keys = keys[start:end] # 对键列表进行切片 result_dict = {k: adict[k] for k in sliced_keys} # 构建新的字典 return result_dict # 测试例子 example_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} sub_dict = dict_slice(example_dict, 1, 4) print(sub_dict) # 输出: {'b': 2, 'c': 3, 'd': 4} ``` 上述代码定义了一个 `dict_slice` 函数,该函数接收三个参数:目标字典、起始索引和终止索引。它会返回一个由指定范围内键组成的子字典。 #### 关于其他数据类型的切片 需要注意的是,虽然字符串、列表和元组可以直接使用切片语法,但字典由于其特殊性质无法像它们一样简单地被切片[^2]。因此,在实际开发过程中通常采用类似于上面提到的方法来解决这个问题。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值