在zip结构中跳过其他所有元素

时间:2017-08-31 07:25:55

标签: python

我对for构造中的元素进行zip循环:

for user_vector, user in zip(sparse_matrix.transpose(), persons)
    rating = user_vector.dot(similarity_matrix)
    rating = np.array(rating.todense())[0]
    .......

如果我想跳过可迭代a中的所有其他元素,我会a[::2],但它不适用于zip构造。 当然,我可以在循环内部设置一个新变量来处理这个需求,但是我需要一个像[::2]这样的简洁解决方案,因为我的代码需要极其可重复的

1 个答案:

答案 0 :(得分:3)

略过构成向量中的元素。

for user_vector, user in zip(sparse_matrix.transpose()[::2], persons[::2])

时间方面,这比list(zip(...))[::2]更好,因为你不首先创建那些不需要的对。请注意,切片仍会在内存中创建新数据副本。

x = [1, 2, 3, 4]
y = ['foo', 'bar', 'baz', 'test']

out = list(zip(x[::2], y[::2]))
print(out)
[(1, 'foo'), (3, 'baz')]