我有两个列表: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))
这打印正确,但我不确定这是否是最佳方式。我将使用大约一到两千行数据,我不确定这是否可能是一个问题。我在这个项目中使用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]
答案 0 :(得分:2)
您可以在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
...
>>>
或者:
>>> list_1 = np.array([0,1,0,0,1,1,0,1,1,0])
>>> list_2 = np.array([1,2,2,4,4,6,7,8,8,10])
>>> for i,j in np.array((list_1,list_2)).T:
... #do stuff
...
>>>
>>> np.array((list_1,list_2)).T
array([[ 0, 1],
[ 1, 2],
[ 0, 2],
[ 0, 4],
[ 1, 4],
[ 1, 6],
[ 0, 7],
[ 1, 8],
[ 1, 8],
[ 0, 10]])
答案 1 :(得分:2)
我认为它似乎更具可读性:
@POST
@Path("/names")
public void getNames(@QueryParam("name") final List<String> names) {
}
答案 2 :(得分:1)
或者您可以使用List comprehensions
并将代码减少一行,例如:
>>>[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]