Python数组与列表的区别




在Python中,列表和数组都被用作数据结构来存储数据。本文将通过案例对比来深入探讨Python数组与列表之间的区别

1、Python数组


Python内置的array模块可用于创建Python数组(ArrayType)

import array

# 1)array.array():仅支持一维数组
# 第一个参数表示类型,用于规定数组元素的类型
# 例如,i:int(大写为无符号int),l:long(大写为无符号long),f:float,d:double
arr1 = array.array('i', [2, 3, 5])
print(arr1.tolist())       # [2, 3, 5]
print(type(arr1))          # <class 'array.array'>

# 2)numpy.array():支持多维数组
arr2 = np.array([2, 3, 5])
print(arr2.tolist())       # [2, 3, 5]
print(type(arr2))          # <class 'numpy.ndarray'>

2、Python列表

ls = [0, 'abc', True]
print(ls)                  # [0, 'abc', True]
print(type(ls))            # <class 'list'>

3、Python数组和列表反转


Python切片格式:[sta:end:step]

  • 当step>0时,sta缺省的为0,end缺省的为len-1,step缺省的为1,可简写为[::]
  • 当step<0时,sta缺省的为-1,end缺省的为-(len-1),step缺省的为-1,可简写为[::-1],表示倒序
# 数组反转
print(arr1[::-1].tolist())   # [5, 3, 2]
print(arr1.reverse())        # None
print(arr1)                  # array('i', [5, 3, 2])

# 列表反转
print(ls[::-1])              # [True, 'abc', 0]
print(ls.reverse())          # None
print(ls)                    # [True, 'abc', 0]

值得注意的是,Python数组和列表对象的reverse()方法仅用于反转修改原来的对象,reverse()方法本身返回结果为None

4、Python数组的其他操作

# 一次添加单个元素
arr1.append(7)
print(arr1.tolist())         # [5, 3, 2, 7]
# 一次添加多个元素
arr1.extend([11, 13])
print(arr1.tolist())         # [5, 3, 2, 7, 11, 13]

# 修改元素
arr1[0] = 1
print(arr1.tolist())         # [1, 3, 2, 7, 11, 13]

# 删除元素
arr1.remove(3)
print(arr1.tolist())         # [1, 2, 7, 11, 13]
# 根据索引删除
arr1.pop(3)
print(arr1.tolist())         # [1, 2, 7, 13]

5、结论


通过以上示例使用的对比,Python数组与列表的区别可总结为以下五点:

  • 1) Python数组和列表具有相同的数据存储方式。数组只能包含一种数据类型的元素,列表可以包含任何数据类型的元素
  • 2) Python数组和列表都是有序、可变长度、值可重复的,数组需要使用array模块声明,列表不用
  • 3) Python数组和列表都支持索引、切片、迭代等
  • 4) 存储相同数量的数据,数组使用较紧凑的内存连续的方式存储数据,占用内存较小,而列表消耗内存较多
  • 5) 数组更适合数据运算,数组一般使用np.array(),不用array模块,列表比数组更加灵活,如无特殊需要,不建议使用数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值