給出一個列表,例如。 [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