Python:索引的for循环内部的两个列表迭代

Python:索引的for循环内部的两个列表迭代,python,numpy,Python,Numpy,我有两个列表:list_1=[0,1,0,0,1,1,0,1,1,0]和list_2=[1,2,2,4,4,6,7,8,8,10],它们的元素数相同。我试图循环浏览这些列表,以便在4个单独的值中使用,这些值将是函数的一部分 到目前为止,我已经: list_1 = [0,1,0,0,1,1,0,1,1,0] list_2 = [1,2,2,4,4,6,7,8,8,10] for i,x in enumerate(list_1): var_list_1_1 = x var_list_

我有两个列表:list_1=[0,1,0,0,1,1,0,1,1,0]和list_2=[1,2,2,4,4,6,7,8,8,10],它们的元素数相同。我试图循环浏览这些列表,以便在4个单独的值中使用,这些值将是函数的一部分

到目前为止,我已经:

list_1 = [0,1,0,0,1,1,0,1,1,0]
list_2 = [1,2,2,4,4,6,7,8,8,10]
for i,x in enumerate(list_1):
    var_list_1_1 = x
    var_list_1_2 = [z for y,z in enumerate(list_1) if y != i]
    var_list_2_1 = list_2[i]
    var_list_2_2 = [z for y,z in enumerate(list_2) if y != i]

    print("{}\n{}\n{}\n{}".format(var_list_1_1,var_list_1_2, var_list_2_1,var_list_2_2))
这打印正确,但我不确定这是否是最好的方法。我将使用大约1到2000行的数据,我不确定这是否可能是一个问题。我正在使用numpy和pandas作为本项目中的其他库,因此使用这些库的解决方案也会起作用。感谢您的宝贵见解

编辑: 我希望每个循环产生类似于下面的内容。它是项目,然后是不包含该项目的列表。两个列表必须是相同的项目索引。我正在为scikit制作一个训练/测试功能集/阵列和一个训练/测试目标阵列,以了解这是否有帮助。我只想反复训练整个集合并测试单个值

var_list_1_1 = 0
var_list_1_2 = [1,0,0,1,1,0,1,1,0]
var_list_2_1 = 1
var_list_2_2 = [2,2,4,4,6,7,8,8,10]
您可以使用python中的zip和numpy中的array.T方法来包装一个新的列数组:

>>> list_1 = [0,1,0,0,1,1,0,1,1,0]
>>> list_2 = [1,2,2,4,4,6,7,8,8,10]
>>> for i,j in zip(list_1,list_2):
...     #do stuff
... 
>>> 
或:

您可以使用python中的zip和numpy中的array.T方法来包装一个新的列数组:

>>> list_1 = [0,1,0,0,1,1,0,1,1,0]
>>> list_2 = [1,2,2,4,4,6,7,8,8,10]
>>> for i,j in zip(list_1,list_2):
...     #do stuff
... 
>>> 
或:


我认为它更具可读性:

for i in xrange(len(list_1)-1):
    l1 = list_1[:]
    l2 = list_2[:]
    var_list_1_1 = l1.pop(i)
    var_list_1_2 = l1
    var_list_2_1 = l2.pop(i)
    var_list_2_2 = l2

我认为它更具可读性:

for i in xrange(len(list_1)-1):
    l1 = list_1[:]
    l2 = list_2[:]
    var_list_1_1 = l1.pop(i)
    var_list_1_2 = l1
    var_list_2_1 = l2.pop(i)
    var_list_2_2 = l2
或者,您可以使用列表理解并将代码减少一行,例如:

>>>[val for z in [(list_1[i], list_2[i]) for i in range(len(list_1)) ] for val in z]
[0, 1, 1, 2, 0, 2, 0, 4, 1, 4, 1, 6, 0, 7, 1, 8, 1, 8, 0, 10]
或者,您可以使用列表理解并将代码减少一行,例如:

>>>[val for z in [(list_1[i], list_2[i]) for i in range(len(list_1)) ] for val in z]
[0, 1, 1, 2, 0, 2, 0, 4, 1, 4, 1, 6, 0, 7, 1, 8, 1, 8, 0, 10]

在这些情况下,我是否仍然需要通过创建一个新的numpy数组或使用这些值来定义剩余的列表?这将使将两个列表链接在一起变得更容易,但是从那里我将如何从两个列表中获取索引为I的项,然后将列表的其余部分作为新的独立变量?在这些情况下,我是否仍然需要通过创建新的numpy数组或使用值理解列表来定义剩余列表?这将使将两个列表链接在一起变得更容易,但是从那里我将如何从两个列表中获取索引为I的项,然后将列表的其余部分作为新的独立变量?请查看所有的is!看这一切!这对于声明的列表很有效,但我的列表实际上是不具有pop功能的numpy数组:/这对于声明的列表很有效,但我的列表实际上是不具有pop功能的numpy数组:/