n
数字のリストがあります。すべての数字をタプルにグループ化するにはどうすればよいですか?
たとえば、リストがa = range(10)
あり、5 つの項目ごとにタプルにグループ化したい場合は、次のようになります。
b = [(0,1,2,3,4),(5,6,7,8,9)]
これどうやってするの?len(a)
また、 が の整数倍でない場合はエラーを発生させたいと考えていますn
。
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [tuple(a[i:i+5]) for i in range(0, len(a), 5)]
[(0, 1, 2, 3, 4), (5, 6, 7, 8, 9)]
N があなたの群の長さであることを決定します
if (len(your_list)%n==0):
wish_list = [ tuple(your_list[i:i+N]) for i in range(0, len(your_list), N) ]
else:
raise Exception("not divisible by N")
In [18]: def f(lst,n):
...: if len(lst)%n != 0:
...: raise ValueError("{} is not a multiple of {}".format(len(lst),n))
...: return zip(*[iter(lst)]*n)
In [19]: lst = range(10)
In [20]: f(lst,5)
Out[20]: [(0, 1, 2, 3, 4), (5, 6, 7, 8, 9)]
In [21]: f(range(9),5)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-21-814a68e0035f> in <module>()
----> 1 f(range(9),5)
<ipython-input-18-3ca911a04fd3> in f(lst, n)
1 def f(lst,n):
2 if len(lst)%n != 0:
----> 3 raise ValueError("{} is not a multiple of {}".format(len(lst),n))
4 return zip(*[iter(lst)]*n)
ValueError: 9 is not a multiple of 5