これは、スライスの割り当てがPythonでどのように機能するためです。イテレートはスライスにのみ割り当てることができ、Pythonはイテレート可能なすべてのアイテムを繰り返しからスライスに割り当てます。たとえば、次のように
>>> def ten():
... for n in range(10):
... yield(n+1)
...
>>> a = ['hello']
# directly assigning an iterable - function that yields things
>>> a[1:1] = ten()
>>> a
['hello', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# a string can be an iterable - iterates over its characters
>>> a[2:2] = 'hello'
>>> a
['hello', 1, 'h', 'e', 'l', 'l', 'o', 2, 3, 4, 5, 6, 7, 8, 9, 10]
# can't assign something that isn't iterable!
>>> a[1:1] = 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable
# as a tuple is iterable, only the contents will be assigned to the list
>>> a[1:1] = ('hello', 'world')
>>> a
['hello', 'hello', 'world', 1, 'h', 'e', 'l', 'l', 'o', 2, 3, 4, 5, 6, 7, 8, 9, 10]
編集:(私が知っている、しかし、あなたが達成するために欠けているものに近いかもしれ割り当てるスライスない)Pythonのリストのinsert
方法を使用することができ、あなたの問題を解決する簡単な方法:
rl.insert(1, test_sl)
あなたがuseingできる 'r1は、[1] = test_s1'あなたは、私が入力をお願い – liansheng
をしたい取得します。これは2をタプルに置き換えます。私はタクトでタプルを使って* [1、*ここ*、2]の間に*を挿入しようとしています。 (分かりやすくするために変更されます) –