如何解决从列表中对子列表进行排序,然后将它们保存为子列表
b = np.array([[1,-20.559,-5.4188,-4.0916],[1,-22,-5.9432,[2,[3,[5,[7,])
list1 = b.tolist()
len(list1)
myList = []
mynew = []
for j in range(8):
for i in range(len(list1)):
if list1[i][0]==j:
myList.append(list1[i][0:4])
mynew.append(myList)
print(myList)
我的输出应该是这样的:
[[[1.0,[1.0,-22.0,-4.0916]],[[2.0,[2.0,[[3.0,[3.0,[[5.0,[5.0,[[7.0,[7.0,-4.0916]]]
我得到的是:
[[1.0,-4.0916]]
任何帮助将不胜感激。
解决方法
您需要一个临时 jList
来存储第一个元素相同的所有列表。
for j in range(8):
jList = []
for i in range(len(list1)):
if list1[i][0] == j:
jList.append(list1[i][:])
if len(jList):
myList.append(jList)
from pprint import pprint
pprint(myList)
"""
[[[1.0,-20.559,-5.4188,-4.0916],[1.0,-22.0,-5.9432,-4.0916]],[[2.0,[2.0,[[3.0,[3.0,[[5.0,[5.0,[[7.0,[7.0,-4.0916]]]
"""
但是你也可以用熊猫来做到这一点
df = pd.DataFrame(b)
result = []
for (method,group) in df.groupby(0):
result.append(group.values.tolist())
pprint(result)
尽管将所有相同的第一个元素分组到一个列表中,您还可以通过将以下几行放在 groupby
df.sort_values([0,1,2,3],axis=1,ascending=[True,True,True],inplace=True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。