tuple = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
これに
tuples = [('a', 'b'), ('c', 'd'), ('e', 'f'), ('g', 'h')]
入力が常に偶数の値を持つと仮定します。
tuple = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
これに
tuples = [('a', 'b'), ('c', 'd'), ('e', 'f'), ('g', 'h')]
入力が常に偶数の値を持つと仮定します。
zip()
あなたの友達です:
def chunk(seq, n):
return [seq[i:i+n] for i in range(0, len(seq), n)]
chunks= chunk(tuples, 2)
それとも、あなたはイテレータを楽しむ場合:それは常に2ではないかもしれない場合
t = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
zip(t[::2], t[1::2])
いいです! –
+1です。私は[::]構文について知りませんでしたので、 –
はtuple =( 'a'、 'b'、 'c'、 'd'、 'e'、 'f' '、' g '、' h '、' i ')#最後の' i 'をメモすると、タプルが奇数になります – dfa
[(tuple[a], tuple[a+1]) for a in range(0,len(tuple),2)]
+1範囲関数の明示的な使用 –
はここで、任意のサイズのチャンクのための一般的なレシピです:
def iterchunk(iterable, n):
it= iter(iterable)
while True:
chunk= []
try:
for i in range(n):
chunk.append(it.next())
except StopIteration:
break
finally:
if len(chunk)!=0:
yield tuple(chunk)
Iはdfa's commentに対する応答としてPeter Hoffmann's answerに基づいて、このコードを提示します。
タプルの要素数が偶数であるかどうかに関係なく動作することが保証されています。タプル要素の偶数を有するか否かを動作することが保証されるよう
[(tup[i], tup[i+1]) for i in range(0, (len(tup)/2)*2, 2)]
(len(tup)/2)*2
範囲パラメータは、タプルの長さに最高偶数以下算出します。
このメソッドの結果はリストになります。これは、tuple()
関数を使用してタプルに変換できます。
サンプル:それは組み込み関数のタプルを上書きするよう
def inPairs(tup):
return [(tup[i], tup[i+1]) for i in range(0, (len(tup)/2)*2, 2)]
# odd number of elements
print("Odd Set")
odd = range(5)
print(odd)
po = inPairs(odd)
print(po)
# even number of elements
print("Even Set")
even = range(4)
print(even)
pe = inPairs(even)
print(pe)
出力
Odd Set [0, 1, 2, 3, 4] [(0, 1), (2, 3)] Even Set [0, 1, 2, 3] [(0, 1), (2, 3)]
あなたは)(という名前の変数のタプルにしたくない場合があります。 – recursive