在 Python 中取消选择列表列表

Posted

技术标签:

【中文标题】在 Python 中取消选择列表列表【英文标题】:unpick a list of lists in Python 【发布时间】:2014-03-13 23:46:37 【问题描述】:

我在 Python 中有一个包含 3 个列表的列表

mylist = [[1, 2, 3], [10, 20, 30], [100, 200, 300]]

我用 3 行代码解压

first= [m[0] for m in mylist]
second = [m[1] for m in mylist]
third = [m[2] for m in mylist]

我希望为相同的内容找到一个有效的单行代码...

【问题讨论】:

【参考方案1】:

你可以使用zip:

first,second,third = zip(*[[1, 2, 3], [10, 20, 30], [100, 200, 300]])

In [10]: first
Out[10]: (1, 10, 100)

In [11]: second
Out[11]: (2, 20, 200)

In [12]: third
Out[12]: (3, 30, 300)

【讨论】:

对于矩阵(每行长度相同的列表的列表),zip(*data) 相当于转置函数。 @IceArdor,ndarray.transpose() 比 zip 有什么优势? 我指的是转置的高级概念。在 Python 中,它被称为 zip。在 NumPy 中,它被称为转置。在 MATLAB 中,它被称为转置或 A'。我不熟悉 numpy 的 ndarray.transpose 函数是如何编写的,所以我无法说出它与 Python 的内置 zip 相比如何。【参考方案2】:

您确定不应该为此使用 numpy 吗?

>>> import numpy
>>> myarray = numpy.array(mylist)
>>> myarray
array([[  1,   2,   3],
       [ 10,  20,  30],
       [100, 200, 300]])

直接访问它们:

>>> myarray[...,0]
array([  1,  10, 100])
>>> myarray[...,1]
array([  2,  20, 200])
>>> myarray[...,2]
array([  3,  30, 300])

如果你愿意,也可以给他们起名字:

>>> a, b, c = myarray
>>> a
array([1, 2, 3])
>>> b
array([10, 20, 30])
>>> c
array([100, 200, 300])
>>> d, e, f = myarray.transpose()
>>> d
array([  1,  10, 100])
>>> e
array([  2,  20, 200])
>>> f
array([  3,  30, 300])

【讨论】:

以上是关于在 Python 中取消选择列表列表的主要内容,如果未能解决你的问题,请参考以下文章

通过多项选择找出火花列表中取消选择的项目

如何取消选择 NavigationLink 中的列表按钮

从下拉列表中取消选择时,Jquery 从数组中删除值

如何取消选择选定的列表视图项目?

选择/取消选择多个列表框中的多个项目

SwiftUI - 未取消选择列表项