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

2024-03-29 02:06:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据数组,在这个数组中,我通过一个三维浮点数组进行切片,并附加满足一组上下界(也是浮点)的元素数。你知道吗

代码的第一部分包含一个嵌套的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)是一个列表,而我一直在尝试生成一个列表列表,每个子列表对应于iterablei。你知道吗

例如

#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,...

我觉得有一种非常简单的方法可以做到这一点,但是我还没有想出任何有效的方法(比如在append之后尝试使用x_lst.split())。你知道吗

另外,任何关于这个问题的反馈都会很好,因为我对这个问题还相当陌生。你知道吗


Tags: 数据in列表foroutputlenrange数组
3条回答

代码中的所有内容似乎都是正确的,除了附加到一维数组中。为了解决您的问题,您可以简单地更改代码,这样一个名为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);

下面的方法似乎应该有效:为什么不为每个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.

好的,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)

相关问题 更多 >