python range和list基本用法

>>> range(1,5) #代表从1到5(不包含5)
[1, 2, 3, 4]
>>> range(1,5,2) #代表从1到5,间隔2(不包含5)
[1, 3]
>>> range(5) #代表从0到5(不包含5)

[0, 1, 2, 3, 4]


array = [ 1 , 2 , 5 , 3 , 6 , 8 , 4 ]
#其实这里的顺序标识是
[ 1 , 2 , 5 , 3 , 6 , 8 , 4 ]
( 0 1 2 3 4 5 6 )
( - 7 , - 6 , - 5 , - 4 , - 3 , - 2 , - 1 )
 
>>> array[ 0 :] #列出0以后的
[ 1 , 2 , 5 , 3 , 6 , 8 , 4 ]
>>> array[ 1 :] #列出1以后的
[ 2 , 5 , 3 , 6 , 8 , 4 ]
>>> array[: - 1 ] #列出-1之前的
[ 1 , 2 , 5 , 3 , 6 , 8 ]
>>> array[ 3 : - 3 ] #列出3到-3之间的
[ 3 ]

那么两个[::]会是什么那?

>>> array[:: 2 ]
[ 1 , 5 , 6 , 4 ]
>>> array[ 2 ::]
[ 5 , 3 , 6 , 8 , 4 ]
>>> array[:: 3 ]
[ 1 , 3 , 4 ]
>>> array[:: 4 ]
[ 1 , 6 ]
如果想让他们颠倒形成reverse函数的效果
>>> array[:: - 1 ]
[ 4 , 8 , 6 , 3 , 5 , 2 , 1 ]
>>> array[:: - 2 ]
[ 4 , 6 , 5 , 1 ]

### Python 中 `range` `list` 的区别及用法 #### 定义与创建方式 `range()` 是一个内置函数,在 Python 3.x 版本中返回的是一个可迭代对象而不是列表。这意味着它不会立即生成所有的数值,而是在遍历时按需生成每一个数[^1]。 ```python r = range(0, 5) print(r) # 输出: range(0, 5) ``` 相比之下,`list` 则是一个序列类型的数据结构,可以存储任意类型的元素,并且一旦定义好就会占用相应的内存空间来保存这些数据项。 ```python l = list(range(0, 5)) print(l) # 输出: [0, 1, 2, 3, 4] ``` #### 存储效率对比 由于 `range` 只有在访问特定索引位置上的值时才会计算该值,因此对于大范围内的整数序列来说更加节省内存资源;而 `list` 需要预先分配足够的连续内存区域用于容纳所有成员,所以当处理大量数据时可能会消耗更多内存。 #### 迭代性能比较 虽然两者都可以用来循环操作中的计数器变量,但是因为 `range` 不会一次性构建完整的数字集合,所以在某些情况下它的运行速度更快一些。不过这种差异通常只会在非常庞大的区间上才变得明显。 #### 支持的操作不同 - **切片**: `list` 对象支持切片操作可以直接获取子集,但 `range` 并不直接提供此功能。 ```python l_slice = l[1:3] print(l_slice) # 输出: [1, 2] r_list = list(r)[1:3] print(r_list) # 输出: [1, 2] ``` - **随机访问**: 如果需要频繁地通过下标查找某个具体的值,则应该考虑使用 `list` ,因为它允许 O(1) 时间复杂度下的快速定位;而对于 `range` 来说,尽管也可以实现类似的效果,但由于其内部机制的原因可能不如前者高效。 #### 序列长度查询 两种方法都能很容易地得到它们所表示区间的大小: ```python len_r = len(r) len_l = len(l) print(f"Length of range is {len_r}, length of list is {len_l}.") # Length of range is 5, length of list is 5. ``` #### 总结 选择 `range` 或者 `list` 主要是基于具体应用场景的需求——如果只需要顺序读取一系列连续整数而不必对其进行修改或其他复杂的操作的话,那么显然更推荐采用轻量级的 `range` 类型;反之则建议转换成 `list` 形式以便于后续加工处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值