Pythonリストのインデックスの分割と操作

私の質問は簡単なようですが、自分自身のようなPythonの初心者のために、これは私が得るにはあまりにも複雑になり始めているので、ここに状況があります:

私は次のようなリストを取る必要があります:

L = [(a, b, c), (d, e, d), (etc, etc, etc), (etc, etc, etc)]

それぞれのインデックスを個別のリストにして、各インデックスの要素を具体的に引き出すことができます。問題は、実際に作業しているリストには、上記のような何百ものインデックスが含まれているため、次のようなことはできません。

L_new = list(L['insert specific index here'])

それは最初のリストの個々のインデックスに対応する何百ものリストでメモリを満たすことを意味し、私の視点からは時間がかかりすぎてメモリが消費されることになります。だから私の質問は、どのようにそれらのインデックスを分離し、個々のリストを何百もの個別のリストを作成することなくそれらから引き出すことができます。

3
あなたはこれのために何もする必要はありません。別のインデックスを追加するだけで問題ありません。 L [0] [0]はLを与え、L [0] [1]はbを与え、L [2] [1]は与える
追加された 著者 Slater Victoroff,

10 答え

私はあなたの質問を誤解しているかもしれませんが、実際にはあなたのタプルをインデックスできるようにする必要はありません。私のコメントを参照してください: L [0] [0]"a" code> "b" 、 L [2] [1]"etc"

あなたが本当にこれをリストのリストにするきれいな方法を望むなら、あなたはリスト内包を使うことができます:

cast = [list(entry) for entry in L]

あなたのコメントに応えて:ディメンションを超えてアクセスしたい場合は、リストの理解をお勧めします。あなたのコメントを具体的に:

crosscut = [entry[0] for entry in L]

コメント2への回答:これは主にスライシングと呼ばれる本当に便利な操作の一部です。特に参照操作を行うには、次のようにします:

multiple_index = [entry[0:3] for entry in L]

あなたの可読性の好みに応じて、実際にはここにいくつかの可能性があります:

list_of_lists = []
for sublist in L:
    list_of_lists.append(list(sublist))

iterator = iter(L)
for i in range(0,iterator.__length_hint__()):
    return list(iterator.next())
    # Or yield list(iterator.next()) if you want lazy evaluation
3
追加された
これは良いスタートですが、これはPythonで行うことができないことを知っていたので、私はその知識のおかげで、ありがとうございました。しかし、L [:] [0]このリストのすべてのインデックスから*を引き出すのに役立つでしょうか? *(aはカッコ内の最初のインデックスであると仮定した例です)
追加された 著者 ImmortalxR,
どうもありがとうございました。更新されたレスポンスの問題を完全に解決しました!まあ、ほとんどの笑、[Lのエントリの[エントリー[0,1,2]]のような複数の「エントリー」をクロスカットに割り当てることはできますか?
追加された 著者 ImmortalxR,
その編集をありがとう、私はそれをもっとはっきりさせなかったことを申し訳なく思っていますが、これに近いものにアクセスしようとしています:[Lのエントリーのためのエントリー[0、8、13]]スライスは実際には別々の指標にする必要があります。あなたが与えることができ、与えられた助けを感謝します。
追加された 著者 ImmortalxR,
@ user2494237更新された応答を見る
追加された 著者 Slater Victoroff,

私はあなたの質問を誤解しているかもしれませんが、実際にはあなたのタプルをインデックスできるようにする必要はありません。私のコメントを参照してください: L [0] [0]"a" code> "b" 、 L [2] [1]"etc"

あなたが本当にこれをリストのリストにするきれいな方法を望むなら、あなたはリスト内包を使うことができます:

cast = [list(entry) for entry in L]

あなたのコメントに応えて:ディメンションを超えてアクセスしたい場合は、リストの理解をお勧めします。あなたのコメントを具体的に:

crosscut = [entry[0] for entry in L]

コメント2への回答:これは主にスライシングと呼ばれる本当に便利な操作の一部です。特に参照操作を行うには、次のようにします:

multiple_index = [entry[0:3] for entry in L]

あなたの可読性の好みに応じて、実際にはここにいくつかの可能性があります:

list_of_lists = []
for sublist in L:
    list_of_lists.append(list(sublist))

iterator = iter(L)
for i in range(0,iterator.__length_hint__()):
    return list(iterator.next())
    # Or yield list(iterator.next()) if you want lazy evaluation
3
追加された
これは良いスタートですが、これはPythonで行うことができないことを知っていたので、私はその知識のおかげで、ありがとうございました。しかし、L [:] [0]このリストのすべてのインデックスから*を引き出すのに役立つでしょうか? *(aはカッコ内の最初のインデックスであると仮定した例です)
追加された 著者 ImmortalxR,
どうもありがとうございました。更新されたレスポンスの問題を完全に解決しました!まあ、ほとんどの笑、[Lのエントリの[エントリー[0,1,2]]のような複数の「エントリー」をクロスカットに割り当てることはできますか?
追加された 著者 ImmortalxR,
その編集をありがとう、私はそれをもっとはっきりさせなかったことを申し訳なく思っていますが、これに近いものにアクセスしようとしています:[Lのエントリーのためのエントリー[0、8、13]]スライスは実際には別々の指標にする必要があります。あなたが与えることができ、与えられた助けを感謝します。
追加された 著者 ImmortalxR,
@ user2494237更新された応答を見る
追加された 著者 Slater Victoroff,

私はあなたの質問を誤解しているかもしれませんが、実際にはあなたのタプルをインデックスできるようにする必要はありません。私のコメントを参照してください: L [0] [0]"a" code> "b" 、 L [2] [1]"etc"

あなたが本当にこれをリストのリストにするきれいな方法を望むなら、あなたはリスト内包を使うことができます:

cast = [list(entry) for entry in L]

あなたのコメントに応えて:ディメンションを超えてアクセスしたい場合は、リストの理解をお勧めします。あなたのコメントを具体的に:

crosscut = [entry[0] for entry in L]

コメント2への回答:これは主にスライシングと呼ばれる本当に便利な操作の一部です。特に参照操作を行うには、次のようにします:

multiple_index = [entry[0:3] for entry in L]

あなたの可読性の好みに応じて、実際にはここにいくつかの可能性があります:

list_of_lists = []
for sublist in L:
    list_of_lists.append(list(sublist))

iterator = iter(L)
for i in range(0,iterator.__length_hint__()):
    return list(iterator.next())
    # Or yield list(iterator.next()) if you want lazy evaluation
3
追加された
これは良いスタートですが、これはPythonで行うことができないことを知っていたので、私はその知識のおかげで、ありがとうございました。しかし、L [:] [0]このリストのすべてのインデックスから*を引き出すのに役立つでしょうか? *(aはカッコ内の最初のインデックスであると仮定した例です)
追加された 著者 ImmortalxR,
どうもありがとうございました。更新されたレスポンスの問題を完全に解決しました!まあ、ほとんどの笑、[Lのエントリの[エントリー[0,1,2]]のような複数の「エントリー」をクロスカットに割り当てることはできますか?
追加された 著者 ImmortalxR,
その編集をありがとう、私はそれをもっとはっきりさせなかったことを申し訳なく思っていますが、これに近いものにアクセスしようとしています:[Lのエントリーのためのエントリー[0、8、13]]スライスは実際には別々の指標にする必要があります。あなたが与えることができ、与えられた助けを感謝します。
追加された 著者 ImmortalxR,
@ user2494237更新された応答を見る
追加された 著者 Slater Victoroff,

内部リストを使用する2つの方法:

for index, sublist in enumerate(L):
    # do something with sublist
    pass

またはイテレータを使用して

iterator = iter(L)
sublist = L.next() # <-- yields the first sublist

どちらの場合でも、 sublist 要素には

  • ダイレクトインデックス
sublist[2]
  • 繰り返し
iterator = iter(sublist)
iterator.next()  # <-- yields first elem of sublist

for elem in sublist:
    # do something with my elem
    pass
2
追加された

内部リストを使用する2つの方法:

for index, sublist in enumerate(L):
    # do something with sublist
    pass

またはイテレータを使用して

iterator = iter(L)
sublist = L.next() # <-- yields the first sublist

どちらの場合でも、 sublist 要素には

  • ダイレクトインデックス
sublist[2]
  • 繰り返し
iterator = iter(sublist)
iterator.next()  # <-- yields first elem of sublist

for elem in sublist:
    # do something with my elem
    pass
2
追加された

内部リストを使用する2つの方法:

for index, sublist in enumerate(L):
    # do something with sublist
    pass

またはイテレータを使用して

iterator = iter(L)
sublist = L.next() # <-- yields the first sublist

どちらの場合でも、 sublist 要素には

  • ダイレクトインデックス
sublist[2]
  • 繰り返し
iterator = iter(sublist)
iterator.next()  # <-- yields first elem of sublist

for elem in sublist:
    # do something with my elem
    pass
2
追加された

あなたが持っているものはタプルのリストです。リストのようなものにアクセスできます

L[3][2]

あなたのリストLの3番目のタプルから2番目の要素を取得します

2
追加された

あなたが持っているものはタプルのリストです。リストのようなものにアクセスできます

L[3][2]

あなたのリストLの3番目のタプルから2番目の要素を取得します

2
追加された

あなたが持っているものはタプルのリストです。リストのようなものにアクセスできます

L[3][2]

あなたのリストLの3番目のタプルから2番目の要素を取得します

2
追加された

あなたが持っているものはタプルのリストです。リストのようなものにアクセスできます

L[3][2]

あなたのリストLの3番目のタプルから2番目の要素を取得します

2
追加された