1

0連続するN整数のリストが与えられます。ここNで、は偶数です。たとえば、入力リストの奇数を繰り返す別のリストを作成するA = [0 , 1 , 2 , 3 , 4]ためのリスト内包表記、つまりタイプを探しています。[a for a in A]B = [0 , 1 , 1 , 2 , 3 , 3 , 4]A

4

2 に答える 2

5

リスト内包表記を使用した(やや醜い)ソリューションは次のとおりです。

a = range(5)
list(itertools.chain(*[[x, x] if x % 2 == 1 else [x] for x in a]))
# => [0, 1, 1, 2, 3, 3, 4]

リスト内包表記は、サブリストのリストを作成します。

[[x, x] if x % 2 == 1 else [x] for x in a] # => [[0], [1, 1], [2], [3, 3], [4]]

この呼び出しは、Pythonでリストitertools.chainをフラット化する多くの方法の1つにすぎません。

于 2012-12-01T18:43:06.713 に答える
1
itertools.chain(*[[i] * (i % 2 + 1) for i in xrange(N + 1)])
于 2012-12-01T18:52:57.230 に答える