1

などのリストがありますlist=['a','b']。「a」と「b」の間に1234などの数字を挿入して一覧表示したい。使うlist[1:1]=str(1234)と返ってきます['a','1','2','3','4','b']。このモードで出力したい: ['a','1234','b']. 手伝っていただけませんか?

4

1 に答える 1

1

insert最初の引数としてインデックス位置を取り、2番目の引数として挿入する項目をとるメソッドを使用できます。

In [1]: l = ['a', 'b']

In [2]: l.insert(1, 1234)

In [3]: l
Out[3]: ['a', 1234, 'b']

ここにリストがあることに注意してlください-組み込みのPythonキーワード(などlist)を変数名として使用することは避けたいと思います。これは、将来的にあなた(および他の人があなたのコードを読む:))の頭痛の種になるからです。なぜあなたがうまくいかなかったのかというと、リストのスライスに割り当てるとき(l[1:1]たとえば)、方程式の右辺の部分は反復可能である必要があります(つまり、別のように反復できるもの)リスト、文字列など)。次に、その反復可能な各要素を、指定した位置から開始して、メインリスト内の独自の要素にします。あなたが言うときstr(1234)、あなたは戻ってきます、それはあなたがそれをリストのスライスに割り当てるときに'1234'分解します。['1', '2', '3', '4']

スライスの割り当てを使用して挿入を実行したい場合は、次のようにすることができます(番号がリストの角かっこで囲まれ、1つの要素のリストになることに注意してください)が、これは何が起こっているかを確認するための単なる例です。 -insertパフォーマンスが向上します:

In [18]: l = ['a', 'b']

In [19]: l[1:] = [1234] + l[1:]

In [20]: l
Out[20]: ['a', 1234, 'b']

これにより、で始まるリストのスライスが取得され、リストに加えて、で始まる元のリストの一部に'b'置き換えられます。これにより、基本的に同じ結果になります。[1234]'b'

于 2012-11-22T06:59:22.510 に答える