对于列表和元组,若想获取其中的一列,不能使用下面的索引方式,这种只有数组才能用:

# 给定一个列表和元组
a = [[1,2,3],[2,3,4],[5,8,9]]  # 列表a
b = ([1,2,3],[2,3,4],[5,8,9])  # 元组b

获取列表中第二列的索引错误使用方式:

a[:,1]  # 把这个里面的值认成了元组
报错:
Traceback (most recent call last):
  File "/home/linux/anaconda3/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3437, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-4-140fc7631e6a>", line 1, in <module>
    a[:,1]
TypeError: list indices must be integers or slices, not tuple

获取列表中某一行和切片的正确使用方式:

a[2]  # 读取列表中的一行
Out[17]: [5, 8, 9]
a[1:2]
Out[18]: [[2, 3, 4]]
a[0:2]
Out[19]: [[1, 2, 3], [2, 3, 4]]

列表可以存放不同类型的数据,因此列表中每个元素的大小可以相同,也可以不同,也就不支持一次性读取一列,即使是对于标准的二维数字列表,也需使用类似如下的循环读取列:

aa =[x[0] for x in a]  # 用于读取列表中的一列
aa
Out[21]: [1, 2, 5]

元组索引错误使用方式:

b[:,1]
报错:
Traceback (most recent call last):
  File "/home/linux/anaconda3/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3437, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-11-140fc7631e6a>", line 1, in <module>
    a[:,1]
TypeError: tuple indices must be integers or slices, not tuple

正确使用方式:

b[1:2]
Out[14]: ([2, 3, 4],)
b[2]
Out[15]: [5, 8, 9]

参考链接1:CSDN

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐