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