整数とリストがあります。変数で始まり、リストで終わるそれらの新しいリストを作成したいと思います。書き込みa + list
エラーが発生します。コンパイラはa
整数として処理するため、追加も拡張も使用できません。これをどのように行いますか?
10 に答える
>>>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)
負の値は、配列の末尾からの相対値として扱われます。
>>> a = 5
>>> li = [1, 2, 3]
>>> [a] + li # Don't use 'list' as variable name.
[5, 1, 2, 3]
特にループでその操作を頻繁に行おうとしている場合、リストは間違ったデータ構造であることに注意してください。
リストはフロントでの変更用に最適化されておらずsomelist.insert(0, something)
、O(n) 操作です。
somelist.pop(0)
また、del somelist[0]
O(n) 操作です。
使用する正しいデータ構造はdeque
、collections
モジュールの 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
同じことを行う別の方法、
list[0:0] = [a]
list_1.insert(0,ur_data)
ur_data が文字列型であることを確認してくださいdata= int(5)
。ur_data = str(data)
新しいリストは、リストを追加するだけで作成できます。
list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)