2017-06-24 5 views
1

ネストされたリストの項目にアクセスできる方法はありますか?新しいリストを作成せずに、Pythonでネストされたリスト項目にアクセスするには?

# Here a is the nested list 
a = [1, 2, [3,4]] 
a[0] == 1 
a[1] == 2 
a[2] == [3,4] 
# k is the new list 
k = a[2] 
k[0] == 3 
k[1] == 4 
+0

あなたは何をしようとしていますか?あなたはあなたのリストの '[3、4]'部分にアクセスしようとしていますか?あなたのリストの2位にあるので、 'a [2]'はリストのその部分を取得します。そこからリストの要素にアクセスする必要がある場合は、 'a [2] [0]'が最初に表示され、 'a [2] [1]'が表示されます。 – idjaw

答えて

2

を私はあなたのためにそれについて少し説明したいと思い、新しいリスト

を作成せずにを言いました。 b=a[2]を宣言することにより、あなたは間違いなく新しいリストを作成しています。あなたの通訳でこれをチェックしてください。

>>> a = [1,2,[3,4]] 
>>> b = a[2] 
>>> hex(id(a[2])) 
'0x7f1432fcd9c8' 
>>> hex(id(b)) 
'0x7f1432fcd9c8' 

ヘクス(ID(your_variable))だけ変数のアドレスを返します。

'0x7f1432fcd9c8'は、a[2]bのアドレスです。あなたは両方が同じであることに気付きましたか?

>>> b=a[:] 
>>> hex(id(a)) 
'0x7f1431850608' 
>>> hex(id(b)) 
'0x7f1432fb9808' 

b=a[:]これが唯一の新しいコピーを作成します。住所がどのように異なるかに注目してください。 しかし、これを下に見てください。

>>> a 
[1, 2, [3, 4]] 
>>> b=a 
>>> hex(id(a)) 
'0x7f1431850608' 
>>> hex(id(b)) 
'0x7f1431850608' 

同じアドレス。これは何を意味するのでしょうか ?これは、Pythonでは参照のみを意味します(つまり、値のメモリのアドレスが変数に割り当てられているので、これを忘れないようにしてください)。また

ネストされたループ内の要素にアクセスするには、サブスクリプトを使用します。

>>> a = [1,2,[3,4],[[9,9],[8,8]]] 
>>> a[1] 
2 
>>> a[2] 
[3, 4] 
>>> a[2][0] 
3 
>>> a[3][1] 
[8, 8] 
>>> a[3][1][0] 
8 

それが最速の方法のpossibileですので、この方法は、O(1)時間で行われている要素にアクセスします。

1

あなたはこのように、2つの添字を提供することによってそれにアクセスすることができます。代わりにこれを行い、Pythonで

a = [1, 2, [3,4]] 
a[2][0] == 3 
a[2][1] == 4 
0

リストは0からインデックスが作成されていない1.

# Here a is the nested list 
a = [1, 2, [3,4]] 
a[0] == 1 
a[1] == 2 
a[2] == [3,4] 
# k is the new list 
k = a[2] 
k[0] == 3 
k[1] == 4 

また、次の構文を使用して、ネストされたリストにアクセスすることができます:あなたはありません心配停止:

a[2][0] # => 3 
a[2][1] # => 2 
0

あなたが懸念あなたが新しいリストを作っているということであるように見えると。

k = a[2] 

両方ka[2]後に同じリストを参照します。新しいものは何も作成されていません。

あなたは簡単に要素3とは異なるものにk[0]を変更することで、それはすでにその位置に持っていることを確認することができます

k[0] = 5 

、その後

[1, 2, [5, 4]] 
を与える
print(a) 

新しいリストを作成したい場合は、e xplicitlyような何か:

k = a[2][:] 
関連する問題