1

現在、私は次のリストを持っています:

>>> a = list()
>>> b = [1, 2, 3]
>>> c = [4,5,6]
>>> d = [7, 8]
>>> a.append(b)
>>> a.append(c)
>>> a.append(d)
>>> del b, c, d
>>> print a
[[1, 2, 3], [4, 5, 6], [7, 8]]
  1. b、c、dの最初の項目(値1、4、7)を取得したい。どうすれば1行のコードでそれを行うことができますか?
  2. b、c、dの残りの項目(値2、3、5、6、8)を取得したい。どうすれば1行のコードでそれを行うことができますか?
4

4 に答える 4

2
>>> zip(*a)[0]
(1, 4)

これzip(*a)は転置関数のようなものです。

>>> zip(*a)
[(1, 4), (2, 5), (3, 6)]

[0]インデックスは最初の要素にインデックスを付けます。

>>> zip(*a)[0]
(1, 4)

2番目の問題はよりトリッキーです-zipトリックを行いません。代わりに、リスト内包表記が必要です。

>>> [i for l in a for i in l[1:]]
[2, 3, 5, 6, 8]

または、フラット化されたリストが必要ない場合は、次のようにします。

>>> [l[1:] for l in a]
[[2, 3], [5, 6], [8]]
于 2013-02-25T10:45:14.747 に答える
1

これでうまくいくはずです:

[lst[0] for lst in a]

aを繰り返し、すべての要素(リスト)に対して最初の値を収集します。

于 2013-02-25T10:44:10.733 に答える
1

これを行う方法はたくさんあります。これは1つになります:

>>> print [x[0] for x in a]
[1,4]

または、forループ内に印刷を配置します。

>>> for x in a: print x[0],
1 4

最初の2つのサブリストの最初の要素のみが必要な場合の最も基本的な方法:

>>> print a[0][0], a[1][0]
1 4
于 2013-02-25T10:44:32.653 に答える
1

niklas B.の回答を使用zip(b,c)[0]しますが、柔軟性を高めるために、リスト内のサブリストの数がわからない場合は、次のことも試してみてください。

[el[0] for el in a]

のサブリストの最初のすべての項目を提供します。

于 2013-02-25T10:45:41.793 に答える