如何解决如何在python中反转某些特定的列表对
我有一个子列表列表,想反转这个列表的一些对。我想找到一种方法来定义应该根据我的数据反转的对。这是对的列表:
split_list=[[[4,1],[3,0],[2,3],[0,[1,4]],\
[[3,1]]]
它有两个子列表。然后我有我想要的数据 o 使用它们来找到我应该反转对的位置:
chunk_len=[[np.array([[1.,2.]]),np.array([[1.,2.],[3.,4.]]),np.array([[0.,0.]])],\
[np.array([[1.,2.]])]]
我想根据存储在 chunk_len
中的子列表的长度找到应该反转的对。 chunk_len
中第一个子列表的长度为 3
。根据这个长度,split_list
的第一个子列表应该被分成 3
个块。然后,我想反转偶数块中的对。对于第二个子列表,它有 2
块,我想反转第二个对。最后我想把它作为:
[[[4,2],\
[[3,1]]]
我尝试了以下方法,但根本没有成功:
cor_spl=[]
for i,j in zip (split_list,chunk_len):
for m in i:
cor_spl.append(m)
if m in i[len(j):int (len(j)+len(i))]:
cor_spl.append (m[::-1])
提前,我非常感谢您的帮助。
解决方法
正如我们所见,在 1st level nested
列表和 split_list
列表中,我们都有 4 unit step
。所以逻辑如下:
逻辑:
1. 我们以 step 4 unit
开始 2 index
遍历每个嵌套列表。
2.对于每个步骤更新 index and consecutive index
使用此命令以相反的顺序:
i[k+l] = i[k+l][::-1]
代码:
import numpy as np
split_list=[
[[4,1],[3,0],[2,3],[0,[1,4]],[[3,1]]
]
chunk_len=[
[
np.array([[1.,2.]]),np.array([[1.,2.],[3.,4.]]),np.array([[0.,0.]])
],[
np.array([[1.,2.]])
]
]
for i,j in zip (split_list,chunk_len):
len_ = len(i)
step_ = len_//len(j)
for k in range(step_,len_,2*step_):
for l in range(step_):
i[k+l] = i[k+l][::-1]
print(split_list)
输出:
[[[4,2],1]]]
,
首先提取新数组中的长度:
chunk_len = [[np.array([[1.,0.]])],\
[np.array([[1.,2.]])]]
c_n = [len(l) for l in chunk_len]
然后遍历压缩对。然后机会数是偶数,处理数据以反转数组。对于每个块,都有 len(sub_list) // c_size
两个元素的数组要反转,因此您应该遍历它们:
for (sub_list,c_size) in zip(split_list,c_n):
for i in range(c_size):
if i % 2 != 0:
for j in range(len(sub_list) // c_size):
j = i * (len(sub_list) // c_size) + j
sub_list[j] = sub_list[j][::-1]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。