Python - 在迭代期间拆分整数列表



我有一个数据数组,我正在对浮点数的 3D 数组进行切片,并附加满足一组上限和下限(也是浮点数(的元素数量。

我的代码的第一部分包含一个嵌套的for循环,样式如下:

x_lst = []
for i in range(len(x1)):
for x in range(len(floatarray[0,:,0])):
if x1[i] <= floatarray[0,x,0] <= x2[i]:
x_lst.append(x)
#issues after this point

内循环将数组(floatarray[0,x,0](中的数据与边界x1x2进行比较,返回整数列表,而外循环遍历边界的值。

我遇到的问题是输出(x_lst(是一个列表,而我一直在尝试生成一个列表列表,每个子列表对应于可迭代i

例如

#Desired output
x_lst = [[5,6,7,13,14],[21,22,23,36,37],[44,45,...
#Actual output
x_lst = [5,6,7,13,14,21,22,23,36,37,44,45,...

我觉得有一种非常简单的方法可以做到这一点,但我无法想出任何有效的方法(例如尝试在附加后使用x_lst.split()(。

此外,关于这个问题的任何反馈都会很棒,因为我对 SO 仍然相当陌生。

似乎以下内容应该有效:为什么不为每个i创建一个中间子列表,并向子列表添加适当的值,然后最终将子列表添加到主列表?

x_lst = []
for i in range(len(x1)):
inner_list = []  # The sublist to be appended.
for x in range(len(floatarray[0,:,0])):
if x1[i] <= floatarray[0,x,0] <= x2[i]:
inner_list.append(x)  # Add the numbers to the sublist.
# Issues after this point...
x_lst.append(inner_list)  # Add the sublist to the main list.

代码中的一切似乎都是正确的,除了你附加到一维数组中。为了解决您的问题,您可以简单地更改代码,以便名为 temp 的临时数组将在内部循环中附加数据,然后将其附加到外部数组x_lst如下所示:

x_lst = []
for i in range(len(x1))
temp=[]
for x in range(len(floatarray[0,:,0])):
if x1[i] <= floatarray[0,x,0] <= x2[i]:
temp.append(x)
x_lst.append(temp);

好的,所以 Sam 的答案是正确的,因为通过迭代附加值,但用我的代码尝试它会产生len(i)列表列表,其中每个子列表包含满足x1x2所有元素的x值,而不是每个列表都包含特定于x1x2的第[i]个元素的值, 因此,所有子列表都是相同的。

我通过将内部for循环替换为列表推导来解决此问题,如下所示,它给出了正确的结果(以所需的形式x_lst = [[5,6,7,13,14],[21,22,23,36,37],[44,45,...(:

x_lst = []
for i in range(len(x1)):
y = [x for x in range(len(floatarray[0,:,0])) if x1[i] <= floatarray[0,x,0] <= x2[i]]
x_lst.append(y)

最新更新