我对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]
这样的简洁解决方案,因为我的代码需要极其可重复的
答案 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')]