如何从一个原始列表创建具有交集的多个列表?

时间:2018-04-25 11:36:32

标签: python list

例如,如果我有列表:

'OAuth oauth_callback="' + callback
+ '", oauth_consumer_key="' + this.Oauth_consumerkey
+ '", oauth_nonce="' + this.Oauth_nonce
+ '", oauth_signature="' + encodeURIComponent(this.createSignature())
+ '", oauth_signature_method="HMAC-SHA1", oauth_timestamp="' + this.Oauth_timestamp
+ '", oauth_version="1.0"'

我想要获取的列表与len(list_b)有关,例如:

list_a = [5, 2, 30, 6, 17]

所以我需要创建的列表是:

list_b = [40, 90]

如何切片或使用循环来执行此操作?

1 个答案:

答案 0 :(得分:0)

以下是使用itertools.islice的一种解决方案。这减少了构建列表的需要,否则这些列表可能用于提供zip函数。

from itertools import islice

a = [5, 2, 30, 6, 17]
b = [40, 90, 20]

n = len(b)

slices = (islice(a, i, None) for i in range(1, n))
res = list(zip(*(a, *slices)))

# [(5, 2, 30), (2, 30, 6), (30, 6, 17)]