Python—在迭代期间拆分整数列表
我有一个数据数组,在这个数组中,我通过一个三维浮点数数组进行切片,并附加满足一组上限和下限(也是浮点数)的元素数 我的代码的第一部分包含一个嵌套的Python—在迭代期间拆分整数列表,python,python-3.x,Python,Python 3.x,我有一个数据数组,在这个数组中,我通过一个三维浮点数数组进行切片,并附加满足一组上限和下限(也是浮点数)的元素数 我的代码的第一部分包含一个嵌套的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)
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
我觉得有一种非常简单的方法可以做到这一点,但我还没有想出任何有效的方法(比如在追加后尝试使用xlst.split()
)
另外,对这个问题的任何反馈都会很好,因为我对这个问题还是相当陌生的。似乎下面的方法应该有效:为什么不为每个
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.
x_lst=[]
对于范围内的i(len(x1)):
内部列表=[]#要追加的子列表。
对于范围内的x(len(floatarray[0,:,0]):
如果x1[i]代码中的所有内容看起来都是正确的,除了附加到一维数组中。为了解决您的问题,您可以简单地更改代码,以便名为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);
x_lst=[]
对于范围内的i(len(x1))
温度=[]
对于范围内的x(len(floatarray[0,:,0]):
如果x1[i]可以,那么Sam的答案在通过迭代添加值方面是正确的,但是用我的代码尝试它会产生len(i)
列表,其中每个子列表都包含满足x1
和x2
所有元素的x
值,不是每个列表都包含特定于x1
和x2
的[i]
第th元素的值,因此所有子列表都是相同的
我通过用列表理解替换内部的for
循环来解决这个问题,如下所示,它给出了正确的结果(以所需的形式x_lst=[[5,6,7,13,14],[21,22,23,36,37],[44,45,
):
x_lst=[]
对于范围内的i(len(x1)):
y=[x表示范围内的x(len(floatarray[0,:,0]),如果x1[i]这些应该是NumPy数组吗?您使用的是列表表示法,但列表不支持您正在进行的索引。在本例中,floatarray
是一个NumPy数组,因为我必须使用几个NumPy功能来排列数据。谢谢!我知道我缺少了一些东西,但对于它是什么,我有一个完全的心理障碍。当我通过查看结果,我发现相反,这种方法是生成len(I)
的嵌套列表,每个子列表包含满足所有边界的x
的所有值,因此我得到len(I)
完全相同的列表。我想我可以理解为什么我的原始代码会在条件语句中这样做,所以我设法用列表理解替换它以获得所需的结果(参见下面的答案)。
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);
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)