给出一个列表,例如。 [2,3,4,10,20,30,102] 我需要所有可能的块/长度3如下子列表,Python中所有可能的列表大小
[[2, 3, 4], [3, 4, 10], [4, 10, 20], [10, 20, 30], [20, 30, 102]]
给出一个列表,例如。 [2,3,4,10,20,30,102] 我需要所有可能的块/长度3如下子列表,Python中所有可能的列表大小
[[2, 3, 4], [3, 4, 10], [4, 10, 20], [10, 20, 30], [20, 30, 102]]
这将做的工作:
l= [2,3,4,10,20,30,102]
res=[l[i:i+3] for i in range(len(l)-2)]
print(res)
这将打印
[[2, 3, 4], [3, 4, 10], [4, 10, 20], [10, 20, 30], [20, 30, 102]]
由于您的代码较短且经过优化,因此我接受您的答案。 –
arr = [2,3,4,10,20,30,102]
arr2 = arr
arr3 =[]
while (len(arr2) >= 3):
arr4=arr2[:3]
arr2 = arr2[1:]
arr3.append(arr4)
print("Original List \n")
print(arr)
print("\n")
print("List with all the chunks \n")
print(arr3)
此功能将做的工作,更
def chunks(sequence, length):
sub_sequences = [sequence[offset:]
for offset in range(length)]
return zip(*sub_sequences)
您例如
list(chunks([2, 3, 4, 10, 20, 30, 102], length=3))
给出所需的输出
感谢您为您+1的努力。 –
使用list comprehension和xrange操作会做你的忙。
样本输出
>>> a = [2,3,4,10,20,30,102]
>>> max_len = 3
>>> [ a[i-max_len: i] for i in xrange(max_len, len(a))]
[[2, 3, 4], [3, 4, 10], [4, 10, 20], [10, 20, 30]]
>>> max_len = 5
>>> [ a[i-max_len: i] for i in xrange(max_len, len(a))]
[[2, 3, 4, 10, 20], [3, 4, 10, 20, 30]]
最简单的方法是使用切片:
>>> s = [2, 3, 4, 10, 20, 30, 102]
>>> [s[i:i+3] for i in range(0, len(s)-2)]
[[2, 3, 4], [3, 4, 10], [4, 10, 20], [10, 20, 30], [20, 30, 102]]
的[?我怎样才能找到一个集合的所有子集,与正好n个元素(可能的复制HTTP ://stackoverflow.com/questions/374626/how-can-i-find-all-the-subsets-of-a-set-with-exactly-n-elements) – CaptainTrunky
@CaptainTrunky这绝对不是重复的关联的问题。这是关于连续的子序列而不是子集。 –
我从这个问题收回国旗,抱歉的错误。 – CaptainTrunky