gpt4 book ai didi

python - 我试图从双重嵌套列表中分离 x 和 y 点。我很难正确分离它

转载 作者:行者123 更新时间:2023-11-28 20:54:48 24 4
gpt4 key购买 nike

我试图从双重嵌套列表中分离出 x 和 y 点,列表元素是一系列 x 和 y 点,我需要将它们分离到单独的 x 和 y 列表中。该列表的形式为 [[[x1, y1, x2, y2, x3, y3.......xn, yn]]] 我需要将其分隔为 [[[x1, x2, x3.. ..xn]]] 和 [[[y1, y2, y3...yn]]]。我在下面编写了程序,它工作正常,除了一点 106.28 应该在 y 列表中但它出现在 x 列表中,因此 x 列表有 48 个元素,y 列表有 46 个元素。我真的不明白为什么 x 和 y 列表的 47 个元素长度不相等。如果有人能帮我弄清楚为什么会这样,我将不胜感激。

x_y_list = [[[139.98, 69.12, 114.6, 69.12, 112.54, 70.72, 111.59, 71.61, 110.66, 72.6, 109.8, 73.65, 145.39, 73.65, 146.02, 74.35, 147.18, 75.83, 148.25, 77.38, 148.73, 78.18, 107.12, 78.19, 106.81, 78.91, 106.28, 80.41, 105.87, 81.94, 105.7, 82.72, 150.84, 82.72, 151.1, 83.45, 151.53, 84.96, 151.88, 86.48, 152.01, 87.25, 105.29, 87.25, 105.3, 88.01, 105.41, 89.53, 105.62, 91.04, 105.76, 91.78, 152.31, 91.78, 152.29, 92.55, 152.16, 94.06, 151.92, 95.57, 151.77, 96.32, 107.18, 96.32, 107.52, 97.11, 108.3, 98.65, 109.18, 100.13, 109.65, 100.85, 150.19, 100.85, 149.79, 101.66, 148.87, 103.22, 147.81, 104.69, 147.24, 105.39, 113.61, 105.38, 114.63, 106.28, 116.82, 107.91, 119.17, 109.31, 120.4, 109.92, 141.43, 109.91]]]
x_list = []
y_list = []
for i in x_y_list:
H = []
W = []
for j in i:
Q = []
B = []
for k in j:
if j.index(k)%2 == 0:
Q.append(k)
if j.index(k)%2 == 1:
B.append(k)
H.append(Q)
W.append(B)
x_list.append(H)
y_list.append(W)

#print(x_list)
#print(y_list)
print(len(x_list[0][0]))
print(len(y_list[0][0]))
48
46

最佳答案

您可以使用列表切片:

lst = [[[1, 10, 2, 20, 3, 30]]]

inner = lst[0][0]
xs, ys = [[inner[::2]]], [[inner[1::2]]]

print(xs, ys)
# [[[1, 2, 3]]] [[[10, 20, 30]]]

如果您有多个子列表:

lst = [[[1, 10, 2, 20], [3, 30, 4, 40]]]

inner = lst[0]

xs = [[i[::2] for i in inner]]
ys = [[i[1::2] for i in inner]]

print(xs, ys)
# [[[1, 2], [3, 4]]] [[[10, 20], [30, 40]]]

你也可以使用numpy:

lst = [[[1, 10, 2, 20], [3, 30, 4, 40]]]
arr = np.array(lst)

xs = arr[:,:,::2]
ys = arr[:,:,1::2]

print(xs)
print(ys)

输出:

[[[1 2]
[3 4]]]

[[[10 20]
[30 40]]]

关于python - 我试图从双重嵌套列表中分离 x 和 y 点。我很难正确分离它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58901089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com