Pythonのリストの先頭に整数を追加します

2013年07月29日に質問されました。  ·  閲覧回数 770.9k回  ·  ソース

gen picture
2013年07月29日

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

回答

Nullify picture
2013年07月29日
857
>>>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)同等です。負の値は扱われます。配列の終わりを基準として。

Rohit Jain picture
2013年07月29日
539
>>> a = 5
>>> li = [1, 2, 3]
>>> [a] + li  # Don't use 'list' as variable name.
[5, 1, 2, 3]
timgeb picture
2016年04月10日
104

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

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

somelist.pop(0)del somelist[0]もO(n)演算です。

使用する適切なデータ構造であるdequeからcollectionsモジュール。 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
v2b picture
2013年07月29日
42

同じことをする別の方法、

list[0:0] = [a]
HoangYell picture
2019年05月14日
14

アンパックリストを使用できます。

a = 5

li = [1,2,3]

li = [a、* li]

=> [5、1、2、3]

Dovi Salomon picture
2019年03月28日
5

timeitモジュールを使用したいくつかの(最小限の)ベンチマークに基づくと、以下は受け入れられた回答よりも優れているとは言えないまでも同様のパフォーマンスを示しているようです。

new_lst = [a, *lst]

[a] + listと同様に、これにより新しいリストが作成され、 lstは変更されません。

リストを変更する場合は、 lst.insert(0, a)ます。

Benyamin Jafari picture
2019年11月21日
3

代替:

>>> from collections import deque

>>> my_list = deque()
>>> my_list.append(1)       # append right
>>> my_list.append(2)       # append right
>>> my_list.append(3)       # append right
>>> my_list.appendleft(100) # append left
>>> my_list

deque([100, 1, 2, 3])

>>> my_list[0]

100

[]:

collections.dequeは、関連するループ内のPython純粋listよりも高速です。

Erico9001 picture
2018年03月26日
2

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

list1 = ['value1','value2','value3']
list2 = ['value0']
newlist=list2+list1
print(newlist)
sahil panindre picture
2019年05月12日
2
list_1.insert(0,ur_data)

ur_dataが文字列型であることを確認して、uにdata= int(5)場合は、それをur_data = str(data)変換します。

aparna ramesh picture
2018年12月19日
1

これらのどれも私のために働いていませんでした。 最初の要素をシリーズ(単一要素シリーズ)の一部に変換し、2番目の要素もシリーズに変換して、追加機能を使用しました。

l = ((pd.Series(<first element>)).append(pd.Series(<list of other elements>))).tolist()