相关疑难解决方法(0)

转置/解压缩功能(zip的反转)?

我有一个2项元组的列表,我想将它们转换为2个列表,其中第一个包含每个元组中的第一个项目,第二个列表包含第二个项目.

例如:

original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
# and I want to become...
result = (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)

是否有内置函数可以做到这一点?

python transpose list matrix

480
推荐指数
6
解决办法
15万
查看次数

是否可以以完全相同的方式对两个列表(相互引用)进行排序?

好吧,这可能不是最明智的想法,但如果可能,我有点好奇.说我有两个清单:

list1 = [3,2,4,1, 1]
list2 = [three, two, four, one, one2]
Run Code Online (Sandbox Code Playgroud)

如果我运行list1.sort(),它会对它进行排序,[1,1,2,3,4]但有没有办法让list2保持同步(所以我可以说第4项属于'3')?我的问题是我有一个非常复杂的程序,可以正常使用列表,但我需要开始引用一些数据.我知道这对于词典来说是一个完美的情况,但我正在努力避免在我的处理中使用字典,因为我确实需要对键值进行排序(如果我必须使用字典,我知道如何使用它们).

基本上这个程序的本质是,数据以随机顺序出现(如上所述),我需要对其进行排序,处理然后发送结果(顺序无关紧要,但用户需要知道哪个结果属于哪个键).我想先将它放在字典中,然后对列表进行排序,但如果不维护订单,我就无法区分具有相同值的项目(在将结果传达给用户时可能会产生影响).理想情况下,一旦我得到列表,我宁愿想出一种方法来将两个列表排序在一起.这可能吗?

python

109
推荐指数
6
解决办法
9万
查看次数

如何根据另一个列表对列表进行排序?

有一个清单:

a = [("ax", 1), ("ec", 3), ("bk", 5)]
Run Code Online (Sandbox Code Playgroud)

另一个清单:

b = ["ec", "ax", "bk"]
Run Code Online (Sandbox Code Playgroud)

我想按照以下方式排序a:

sort_it(a, b)

a = [("ec", 3), ("ax", 1), ("bk", 5)]
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

python sorting list

40
推荐指数
1
解决办法
2万
查看次数

如何在python中使用openCV的连接组件和stats?

我正在寻找一个如何在python中使用OpenCV的ConnectedComponentsWithStats()函数的示例,请注意,这仅适用于OpenCV 3或更高版本.官方文档仅显示了C++的API,即使在为python编译时该函数存在.我无法在网上找到它.

python opencv connected-components

35
推荐指数
3
解决办法
5万
查看次数

使用排序另一个列表的结果在Python中对列表进行排序

我在Python中有两个列表

list_1 = [5, 2, 8];
list_2 = ['string1', 'string2', 'string3']
Run Code Online (Sandbox Code Playgroud)

我想对第一个列表进行排序并使用结果对第二个列表进行排序.

换句话说,结果应该是:

# Sorted in descending order
list_1_sorted = [8, 5, 2];
list_2_sorted = ['string3', 'string1', 'string2'];
Run Code Online (Sandbox Code Playgroud)

我知道如何单独对每个列表进行排序,但是我如何使用排序其他列表产生的索引排列来置换一个列表?

python

10
推荐指数
2
解决办法
1万
查看次数

按给定的索引顺序对列表进行排序

我有一个从文件中读取的行列表.我需要按时间戳对列表进行排序.我使用正则表达式解析了时间戳,并将它们放在一个单独的列表中.两个列表的索引将匹配.一旦我对时间戳列表进行排序,我就可以得到索引的顺序.

有没有办法将相同的索引顺序应用于原始行列表?结果应该是原始行的排序列表.

例:

listofLines =  ['log opened 16-Feb-2010 06:37:56 UTC', 
                '06:37:58 Custom parameters are in use',
                'log closed 16-Feb-2010 05:26:47 UTC']
listofTimes = ['06:37:56', '06:37:58', '05:26:47']
sortedIndex = [2,0,1]
Run Code Online (Sandbox Code Playgroud)

python sorting list

8
推荐指数
2
解决办法
1万
查看次数

Python,按另一个列表对列表进行排序

我有一个清单a

a = ['c','d','b','a','e']
Run Code Online (Sandbox Code Playgroud)

和一个列表b

b = ['a001','b002','c003','d004','e005']
Run Code Online (Sandbox Code Playgroud)

我怎么能得到我的列表c如下:

c = ['c003','d004','b002','a001','e005']
Run Code Online (Sandbox Code Playgroud)

基本上b使用每个元素的一部分,按照 中定义的顺序进行排序a

非常感谢。

python python-2.7

7
推荐指数
3
解决办法
7003
查看次数

如何根据另一个列表对一个列表进行排序?Python

所以如果我有一个清单:

name = ['Megan', 'Harriet', 'Henry', 'Beth', 'George']
Run Code Online (Sandbox Code Playgroud)

我还有另一个列表,其中每个值代表按正确顺序排列的名称

score_list = [9, 6, 5, 6, 10]
Run Code Online (Sandbox Code Playgroud)

所以 Megan = 9,Beth = 6(顺便说一句,这是来自字典)

我如何按字母顺序对名称进行排序,但保留 Score_list 匹配名称?我已经使用冒泡排序方法对数字进行排序,但没有对字符串进行排序。

python sorting list python-3.3

6
推荐指数
2
解决办法
4231
查看次数

在与其他LineString的交点处匀称地拆分LineString

我有一组LineString,这些LineString与其他LineString相交,并且我想在这些交点将LineString分成单独的段。我有一个解决方案,但我认为这不是最好的方法。

假设我们正在处理一个LineString:

>>> import shapely
>>> from shapely.geometry import *
>>> import geopandas as gpd
>>> 
>>> MyLine=LineString([(0,0),(5,0),(10,3)])
>>> MyLine
<shapely.geometry.linestring.LineString object at 0x1277EEB0>
>>> 
Run Code Online (Sandbox Code Playgroud)

与该LineString相交的2行:

>>> IntersectionLines=gpd.GeoSeries([LineString([(2,1.5),(3,-.5)]), LineString([(5,.5),(7,.5)])])
>>> IntersectionLines
0    LINESTRING (2 1.5, 3 -0.5)
1     LINESTRING (5 0.5, 7 0.5)
dtype: object
>>> 
Run Code Online (Sandbox Code Playgroud)

看起来像这样: 在此处输入图片说明

我可以得到交点如下:

>>> IntPoints=MyLine.intersection(IntersectionLines.unary_union)
>>> IntPointCoords=[x.coords[:][0] for x in IntPoints]
>>> IntPointCoords
[(2.75, 0.0), (5.833333333333333, 0.5)]
>>> 
Run Code Online (Sandbox Code Playgroud)

然后,我提取起点和终点,并用这些点和相交点创建对,这些对点将用于形成线段:

>>> StartPoint=MyLine.coords[0]
>>> EndPoint=MyLine.coords[-1]
>>> SplitCoords=[StartPoint]+IntPointCoords+[EndPoint]
>>> 
>>> def pair(list):
...     for i in range(1, len(list)): …
Run Code Online (Sandbox Code Playgroud)

python shapely geopandas

5
推荐指数
1
解决办法
3695
查看次数

基于单个列表的排序在python中排序多个列表

我在这里是一个蟒蛇新手,我已经遇到了一个相当简单的问题 - 我正在寻找解决这个问题的最有效方法.所以,我有5个列表如下:

a,b,c,d,score
Run Code Online (Sandbox Code Playgroud)

以上列表都具有相同的大小(在我的情况下为500).a,b,c,d是字符串列表,score是一个int列表.

我想做的是a,b,c,d基于升序或降序排序score.因此,我首先要score根据降序模式进行排序,然后a,b,c,d根据排序的分数列表(按相同顺序)对相应的元素进行排序.

enumerate想要实现这一点,但我想知道是否itertools可以在这里使用它来使它更快更有效.

关于如何实现这一目标的任何指导都将非常感谢&&抱歉,如果这是一个101问题.

python python-itertools

3
推荐指数
1
解决办法
6252
查看次数