Python中文
首页
教程
问答
标签
搜索
登录
注册
在Python中按项目的所有数字排序
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<h2>我想按每个项目的数字对列表进行排序</h2> <p>示例:</p> <pre><code>myCmpItem = '511' myList = ['111','222','333','444','555','123'] (some magic) mySortedList = ['111', '222', '333', '123', '444', '555'] </code></pre> <h2>算法的工作原理:</h2> <ul> <li>将myList中当前项的每个位数与myCmpItem进行比较 <ul> <li>对于列表中的第一项,应该是:</li> <li>5和1的差是4</li> <li>1和1之间的差为0</li> <li>1和1之间的差为0</li> <li>这两个数字的差是4(数字比较的总和)</li> </ul></li> <li>对所有其他项目执行相同的操作</li> <li>根据计算出的相似度排序</li> </ul> <p>我可以用很多for循环来编写这个代码,但实际上我正在寻找一种更快的方法来实现这一点。有没有什么算法可以做到这一点呢?快吗?在</p> <h2>进一步限制</h2> <ul> <li>在我的示例中,所有项目的长度为3,在实际场景中,它们的长度为25</li> <li>所有项目的长度相同,len(myList[x])==25始终为真</li> <li>项目可以是字符串、int、float或更适合算法的任何东西</li> <li>只有1到5之间的数字</li> </ul> <h2>背景</h2> <p>所有项目的数字都是问题的答案,我想找到与给定答案集最相似的答案集。所以“123”意味着用户回答问题1=答案1,问题2=答案2,问题3=答案3。它们是选择题,总共有25个问题(=长度为25),并且总有5个不同的可能回答(即数字1-5)。在</p> <p><em>PS:这是我在Stackoverflow上问的第一个问题,所以请对我好一点。我已经在google上搜索了好几个小时,但是我没有找到任何解决方案,所以我问了这里。我希望没问题。而且英语不是我的母语。</em></p> <h2>答案(感谢所有参与者!)在</h2> <p>@larsmans的回答(<a href="https://stackoverflow.com/a/10790714/511484">https://stackoverflow.com/a/10790714/511484</a>)很好地解释了如何以合理的速度解决这个问题。你甚至可以通过提前计算每个数字之间的距离来加快算法的速度,请看@gnibbler的帖子(<a href="https://stackoverflow.com/a/10791838/511484">https://stackoverflow.com/a/10791838/511484</a>)所有其他的答案都很好而且正确,但是我发现@larsmans有最好的解释。再次感谢大家的帮助!在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>使用<code>lambda</code>和列表理解:</p> <pre><code>sorted(myList, key=lambda item: sum([abs(int(x) - int(y)) for x, y in zip(item, myCmpItem)]) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
pyVISA GPIB GET(组执行触发器)
2 回答
Pyvisa IOerror设备:Korad K3005d电源
6 回答
PyVISA mac OS X(山狮)安捷伦33250
6 回答
Pyvisa Pyusb无法加载大于1 MB的序列
1 回答
pyVisa RS232太慢
10 回答
PyVISA RS232超时错误(安捷伦电源)
9 回答
PyVISA SCPI命令和查询(值更新问题)
3 回答
PyVISA SerialInstrument需要硬重置才能在故障后连接
6 回答
pyvisa,未找到函数viOpen
1 回答
pyVISA:以编程方式将仪器返回到本地模式
2 回答
pyvisa:接口类型是什么意思?
3 回答
pyvisa.errors.VisaIOError:VI_ERROR_TMO(1073807339):操作完成前超时
2 回答
PyVisa“更复杂的示例”根本不运行Keithley 2400不理解的命令
10 回答
PyVisapy后端
9 回答
PyVISA不能写入超过7F的十六进制字符
7 回答
PYVISA中的ENUM模块和cStringIO模块
4 回答
PyVisa代码的图形用户界面
10 回答
Pyvisa使用按键电源超时
4 回答
PyVISA和Kethley 2701只能从一个通道获取结果
7 回答
PyVisa和Printing New D
6 回答