665

整数とリストがあります。変数で始まり、リストで終わるそれらの新しいリストを作成したいと思います。書き込みa + listエラーが発生します。コンパイラはa整数として処理するため、追加も拡張も使用できません。これをどのように行いますか?

4

10 に答える 10

1068
>>>var=7
>>>array = [1,2,3,4,5,6]
>>>array.insert(0,var)
>>>array
[7, 1, 2, 3, 4, 5, 6]

使い方:

array.insert(index, value)

指定された位置にアイテムを挿入します。最初の引数は、挿入する前の要素のインデックスであるためarray.insert(0, x)、リストの先頭に挿入され、とarray.insert(len(array), x)同等です。array.append(x)負の値は、配列の末尾からの相対値として扱われます。

于 2013-07-28T18:07:05.063 に答える
577
>>> a = 5
>>> li = [1, 2, 3]
>>> [a] + li  # Don't use 'list' as variable name.
[5, 1, 2, 3]
于 2013-07-28T17:55:11.833 に答える
127

特にループでその操作を頻繁に行おうとしている場合、リストは間違ったデータ構造であることに注意してください。

リストはフロントでの変更用に最適化されておらずsomelist.insert(0, something)O(n) 操作です。

somelist.pop(0)また、del somelist[0]O(n) 操作です。

使用する正しいデータ構造はdequecollectionsモジュールの a です。deques は、リストのものと同様のインターフェイスを公開しますが、両方のエンドポイントからの変更に対して最適化されています。appendleft前面に挿入する方法があります。

デモ:

In [1]: lst = [0]*1000
In [2]: timeit -n1000 lst.insert(0, 1)
1000 loops, best of 3: 794 ns per loop
In [3]: from collections import deque
In [4]: deq = deque([0]*1000)
In [5]: timeit -n1000 deq.appendleft(1)
1000 loops, best of 3: 73 ns per loop
于 2016-04-10T12:44:28.243 に答える
52

同じことを行う別の方法、

list[0:0] = [a]
于 2013-07-28T18:38:16.480 に答える
8
list_1.insert(0,ur_data)

ur_data が文字列型であることを確認してくださいdata= int(5)ur_data = str(data)

于 2019-05-12T12:12:38.610 に答える
3

新しいリストは、リストを追加するだけで作成できます。

list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)
于 2018-03-26T14:15:01.057 に答える