リストの変更がサブリスト全体に予期せず反映されたリスト

702
Charles Anderson 2008-10-28 04:57.

Pythonでリストのリストを作成する必要があったので、次のように入力しました。

myList = [[1] * 4] * 3

リストは次のようになりました。

[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]  

次に、最も内側の値の1つを変更しました。

myList[0][0] = 5

今私のリストは次のようになります:

[[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]  

それは私が望んでいた、または期待したものではありません。誰かが何が起こっているのか、そしてそれを回避する方法を説明できますか?

16 answers

614
CAdaker 2008-10-28 05:03.

あなたが書くとき、あなた[x]*3は本質的にリストを手に入れます[x, x, x]。つまり、同じへの3つの参照を持つリストxです。次に、このシングルを変更すると、x3つの参照すべてを介して表示されます。

x = [1] * 4
l = [x] * 3
print(f"id(x): {id(x)}")
# id(x): 140560897920048
print(
    f"id(l[0]): {id(l[0])}\n"
    f"id(l[1]): {id(l[1])}\n"
    f"id(l[2]): {id(l[2])}"
)
# id(l[0]): 140560897920048
# id(l[1]): 140560897920048
# id(l[2]): 140560897920048

x[0] = 42
print(f"x: {x}")
# x: [42, 1, 1, 1]
print(f"l: {l}")
# l: [[42, 1, 1, 1], [42, 1, 1, 1], [42, 1, 1, 1]]

これを修正するには、各位置に新しいリストを作成する必要があります。それを行う1つの方法は

[[1]*4 for _ in range(3)]

これは[1]*4、一度評価して1つのリストを3回参照するのではなく、毎回再評価します。


*リスト内包表記のように独立したオブジェクトを作成できないのはなぜか疑問に思われるかもしれません。これは、乗算演算子*が式を見ずにオブジェクトを操作するためです。を使用*して[[1] * 4]3を乗算すると、式のテキストではなく、*1要素のリストのみが[[1] * 4]評価され[[1] * 4ます。*その要素のコピーを作成する方法、再評価する方法、コピーが[[1] * 4]必要なことすらわかりません。一般に、要素をコピーする方法さえない可能性があります。

唯一のオプション*は、新しいサブリストを作成するのではなく、既存のサブリストへの新しい参照を作成することです。それ以外のものは一貫性がないか、基本的な言語設計の決定を大幅に再設計する必要があります。

対照的に、リスト内包表記は、反復ごとに要素式を再評価します。[[1] * 4 for n in range(3)]再評価し[1] * 4、同じ理由で毎回[x**2 for x in range(3)]再評価x**2するたびに。の評価ごとに[1] * 4新しいリストが生成されるため、リスト内包表記は必要な処理を実行します。

ちなみに、[1] * 4の要素もコピー[1]しませんが、整数は不変なので、それは問題ではありません。1.value = 21を2に変えるようなことはできません。

140
nadrimajstor 2013-08-27 13:17.
size = 3
matrix_surprise = [[0] * size] * size
matrix = [[0]*size for i in range(size)]

ライブPythonチューターの視覚化

56
PierreBdR 2008-10-28 05:07.

実際、これはまさにあなたが期待することです。ここで起こっていることを分解してみましょう:

あなたが書く

lst = [[1] * 4] * 3

これは次と同等です。

lst1 = [1]*4
lst = [lst1]*3

これlstは、すべてがを指す3つの要素を持つリストであることを意味しlst1ます。これは、次の2行が同等であることを意味します。

lst[0][0] = 5
lst1[0] = 5

lst[0]何もなく、ではありませんlst1

目的の動作を取得するには、リスト内包表記を使用できます。

lst = [ [1]*4 for n in range(3) ] #python 3
lst = [ [1]*4 for n in xrange(3) ] #python 2

この場合、式はnごとに再評価され、異なるリストになります。

38
Blair Conrad 2008-10-28 05:02.
[[1] * 4] * 3

あるいは:

[[1, 1, 1, 1]] * 3

[1,1,1,1]内部リストの3つのコピーではなく、内部を3回参照するリストを作成します。したがって、リストを(任意の位置で)変更するたびに、変更が3回表示されます。

これはこの例と同じです:

>>> inner = [1,1,1,1]
>>> outer = [inner]*3
>>> outer
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
>>> inner[0] = 5
>>> outer
[[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]

おそらく少し驚くことではありません。

10
Kasravnd 2015-06-18 07:08.

問題を正しく説明した受け入れられた回答に加えて、リスト内包表記内で、使い捨て変数の代わりに、xrange()より効率的なジェネレーターを返すpython-2.x useを使用している場合(range()python 3では同じ仕事をします):_n

[[1]*4 for _ in xrange(3)]      # and in python3 [[1]*4 for _ in range(3)]

また、よりPython的な方法として、itertools.repeat()繰り返される要素のイテレータオブジェクトを作成するために使用できます。

>>> a=list(repeat(1,4))
[1, 1, 1, 1]
>>> a[0]=5
>>> a
[5, 1, 1, 1]

PS numpyを使用して、1または0の配列のみを作成する場合はnp.onesnp.zerosおよび/または他の数値を使用できますnp.repeat()

In [1]: import numpy as np

In [2]: 

In [2]: np.ones(4)
Out[2]: array([ 1.,  1.,  1.,  1.])

In [3]: np.ones((4, 2))
Out[3]: 
array([[ 1.,  1.],
       [ 1.,  1.],
       [ 1.,  1.],
       [ 1.,  1.]])

In [4]: np.zeros((4, 2))
Out[4]: 
array([[ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.]])

In [5]: np.repeat([7], 10)
Out[5]: array([7, 7, 7, 7, 7, 7, 7, 7, 7, 7])
7
Zbyněk Winkler 2016-04-07 03:40.

Pythonコンテナには、他のオブジェクトへの参照が含まれています。この例を参照してください。

>>> a = []
>>> b = [a]
>>> b
[[]]
>>> a.append(1)
>>> b
[[1]]

これbは、リストへの参照である1つのアイテムを含むリストaです。リストaは変更可能です。

リストに整数を乗算することは、リストをそれ自体に複数回追加することと同じです(一般的なシーケンス操作を参照)。したがって、例を続けます。

>>> c = b + b
>>> c
[[1], [1]]
>>>
>>> a[0] = 2
>>> c
[[2], [2]]

cリストaには、と同等のリストへの2つの参照が含まれていることがわかりc = b * 2ます。

Python FAQには、この動作の説明も含まれています。多次元リストを作成するにはどうすればよいですか?

7
jerrymouse 2017-04-06 19:36.

myList = [[1]*4] * 3[1,1,1,1]メモリ内に1つのリストオブジェクトを作成し、その参照を3回コピーします。これはと同等obj = [1,1,1,1]; myList = [obj]*3です。の変更は、リストで参照されてobjいる場所に関係なく、3か所に反映されobjます。正しいステートメントは次のとおりです。

myList = [[1]*4 for _ in range(3)]

または

myList = [[1 for __ in range(4)] for _ in range(3)]

ここ注意すべき重要なことは、*演算子はにリテラルのリストを作成するために使用されるということです。1不変である、obj =[1]*4まだのリストが作成されます1フォームに渡る繰り返し4回[1,1,1,1]。ただし、不変オブジェクトへの参照が行われると、オブジェクトは新しいオブジェクトで上書きされます。

つまりobj[1]=42、そうすると、一部の人が想定しているobjようにはなり[1,42,1,1] ません 。これも確認できます。 [42,42,42,42]

>>> myList = [1]*4
>>> myList
[1, 1, 1, 1]

>>> id(myList[0])
4522139440
>>> id(myList[1]) # Same as myList[0]
4522139440

>>> myList[1] = 42 # Since myList[1] is immutable, this operation overwrites myList[1] with a new object changing its id.
>>> myList
[1, 42, 1, 1]

>>> id(myList[0])
4522139440
>>> id(myList[1]) # id changed
4522140752
>>> id(myList[2]) # id still same as myList[0], still referring to value `1`.
4522139440
5
bagrat 2015-06-11 04:38.

次のようにコードを書き直してみましょう。

x = 1
y = [x]
z = y * 4

myList = [z] * 3

次に、これを持って、すべてをより明確にするために次のコードを実行します。コードが行うことは、基本的idに、取得したオブジェクトのsを出力することです。

オブジェクトの「アイデンティティ」を返す

それらを特定し、何が起こるかを分析するのに役立ちます。

print("myList:")
for i, subList in enumerate(myList):
    print("\t[{}]: {}".format(i, id(subList)))
    for j, elem in enumerate(subList):
        print("\t\t[{}]: {}".format(j, id(elem)))

そして、次の出力が得られます。

x: 1
y: [1]
z: [1, 1, 1, 1]
myList:
    [0]: 4300763792
        [0]: 4298171528
        [1]: 4298171528
        [2]: 4298171528
        [3]: 4298171528
    [1]: 4300763792
        [0]: 4298171528
        [1]: 4298171528
        [2]: 4298171528
        [3]: 4298171528
    [2]: 4300763792
        [0]: 4298171528
        [1]: 4298171528
        [2]: 4298171528
        [3]: 4298171528

それでは、ステップバイステップで進みましょう。がxあり1、をy含む単一の要素リストがありxます。最初のステップは、基本的にy * 4新しいリストを取得することです。つまり、最初のオブジェクトへの参照である4つの要素を持つ新しいリストを作成します。ネットステップはかなり似ています。最初のステップと同じ理由で、基本的に、を実行し、それを返します。z[x, x, x, x]xz * 3[[x, x, x, x]] * 3[[x, x, x, x], [x, x, x, x], [x, x, x, x]]

5
Neeraj Komuravalli 2016-06-14 20:36.

簡単に言えば、Pythonではすべてが参照によって機能するため、これが発生しているため、リストのリストをそのように作成すると、基本的にこのような問題が発生します。

問題を解決するには、次のいずれかを実行できます。1.numpy.emptyのnumpy配列のドキュメントを使用します。2。リストが表示されたらリストを追加します。3.必要に応じて辞書を使用することもできます

4
awulll 2016-04-25 03:31.

誰もが何が起こっているのか説明していると思います。私はそれを解決する1つの方法を提案します:

myList = [[1 for i in range(4)] for j in range(3)]

myList[0][0] = 5

print myList

そして、あなたは持っています:

[[5, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
4
ouxiaogu 2019-08-09 22:37.

Pythonリスト乗算の@spelchekr :[[...]] * 3は、変更時に相互にミラーリングする3つのリストを作成します。「なぜ、外側の* 3だけがより多くの参照を作成し、内側のリストは作成しないのか」について同じ質問がありました。 ?なぜそれはすべて1ではないのですか?」

li = [0] * 3
print([id(v) for v in li]) # [140724141863728, 140724141863728, 140724141863728]
li[0] = 1
print([id(v) for v in li]) # [140724141863760, 140724141863728, 140724141863728]
print(id(0)) # 140724141863728
print(id(1)) # 140724141863760
print(li) # [1, 0, 0]

ma = [[0]*3] * 3 # mainly discuss inner & outer *3 here
print([id(li) for li in ma]) # [1987013355080, 1987013355080, 1987013355080]
ma[0][0] = 1
print([id(li) for li in ma]) # [1987013355080, 1987013355080, 1987013355080]
print(ma) # [[1, 0, 0], [1, 0, 0], [1, 0, 0]]

上記のコードを試した後の私の説明は次のとおりです。

  • 内部*3も参照を作成しますが、その参照は不変です。[&0, &0, &0]たとえば、変更するときli[0]は、const intの基になる参照を変更できない0ため、参照アドレスを新しいものに変更するだけ&1です。
  • whilema=[&li, &li, &li]liは変更可能であるため、を呼び出すとma[0][0]=1、ma [0] [0]はと等しくなるため&li[0]、すべての&liインスタンスが最初のアドレスをに変更します&1
3
Adil Abbasi 2016-08-10 21:09.

より説明的に説明しようとすると、

操作1:

x = [[0, 0], [0, 0]]
print(type(x)) # <class 'list'>
print(x) # [[0, 0], [0, 0]]

x[0][0] = 1
print(x) # [[1, 0], [0, 0]]

操作2:

y = [[0] * 2] * 2
print(type(y)) # <class 'list'>
print(y) # [[0, 0], [0, 0]]

y[0][0] = 1
print(y) # [[1, 0], [1, 0]]

最初のリストの最初の要素を変更しても、各リストの2番目の要素が変更されなかったのはなぜですか?これ[0] * 2は、実際には2つの数値のリストであり、0への参照は変更できないためです。

クローンコピーを作成する場合は、操作3を試してください。

import copy
y = [0] * 2   
print(y)   # [0, 0]

y = [y, copy.deepcopy(y)]  
print(y) # [[0, 0], [0, 0]]

y[0][0] = 1
print(y) # [[1, 0], [0, 0]]

クローンコピーを作成するもう1つの興味深い方法、操作4:

import copy
y = [0] * 2
print(y) # [0, 0]

y = [copy.deepcopy(y) for num in range(1,5)]
print(y) # [[0, 0], [0, 0], [0, 0], [0, 0]]

y[0][0] = 5
print(y) # [[5, 0], [0, 0], [0, 0], [0, 0]]
2
Anand Tripathi 2016-07-16 03:48.

組み込みのリスト関数を使用すると、次のように実行できます

a
out:[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
#Displaying the list

a.remove(a[0])
out:[[1, 1, 1, 1], [1, 1, 1, 1]]
# Removed the first element of the list in which you want altered number

a.append([5,1,1,1])
out:[[1, 1, 1, 1], [1, 1, 1, 1], [5, 1, 1, 1]]
# append the element in the list but the appended element as you can see is appended in last but you want that in starting

a.reverse()
out:[[5, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
#So at last reverse the whole list to get the desired list
2
Deepak Patankar 2020-06-22 01:34.

これらの質問にはたくさんの答えがあります、私は同じことを図式的に説明するために私の答えを追加しています。

2Dを作成した方法で、浅いリストを作成します

    arr = [[0]*cols]*row

代わりに、リストの要素を更新する場合は、

   rows, cols = (5, 5) 
   arr = [[0 for i in range(cols)] for j in range(rows)] 

説明

以下を使用してリストを作成できます。

   arr = [0]*N 

または

   arr = [0 for i in range(N)] 

最初のケースでは、配列のすべてのインデックスが同じ整数オブジェクトを指しています

特定のインデックスに値を割り当てると、新しいintオブジェクトが作成されarr[4] = 5ます。

ここで、リストのリストを作成するとどうなるかを見てみましょう。この場合、トップリストのすべての要素が同じリストを指します。

また、インデックスの値を更新すると、新しいintオブジェクトが作成されます。ただし、すべてのトップレベルリストインデックスが同じリストを指しているため、すべての行が同じように見えます。そして、要素を更新すると、その列のすべての要素が更新されているように感じるでしょう。

クレジット:ここで簡単に説明してくれたPranavDevarakondaに感謝します

0
Brian 2020-10-23 09:57.

任意の数のリストをネストする方法を探していたので、ここに到着しました。上記には多くの説明と具体例がありますが、次の再帰関数を使用して、...のリストのリストのN次元リストを一般化できます。

import copy

def list_ndim(dim, el=None, init=None):
    if init is None:
        init = el

    if len(dim)> 1:
        return list_ndim(dim[0:-1], None, [copy.copy(init) for x in range(dim[-1])])

    return [copy.deepcopy(init) for x in range(dim[0])]

次のような関数を最初に呼び出します。

dim = (3,5,2)
el = 1.0
l = list_ndim(dim, el)

ここ(3,5,2)で、は構造体の次元のタプル(numpyshape引数と同様)であり1.0、構造体を初期化する要素です(Noneでも機能します)。init引数は、ネストされた子リストを繰り越すための再帰呼び出しによってのみ提供されることに注意してください

上記の出力:

[[[1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0]],
 [[1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0]],
 [[1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0]]]

特定の要素を設定します。

l[1][3][1] = 56
l[2][2][0] = 36.0+0.0j
l[0][1][0] = 'abc'

結果の出力:

[[[1.0, 1.0], ['abc', 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0]],
 [[1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 56.0], [1.0, 1.0]],
 [[1.0, 1.0], [1.0, 1.0], [(36+0j), 1.0], [1.0, 1.0], [1.0, 1.0]]]

リストの型指定されていない性質は上に示されています

0
mishsx 2020-11-23 09:45.

シーケンス内のアイテムはコピーされないことに注意してください。それらは複数回参照されます。これはしばしば新しいPythonプログラマーを悩ませます。考慮してください:

>>> lists = [[]] * 3
>>> lists
[[], [], []]
>>> lists[0].append(3)
>>> lists
[[3], [3], [3]]

何が起こったのかという[[]]と、それは空のリストを含む1つの要素のリストであるため、の3つの要素はすべて[[]] * 3この単一の空のリストへの参照です。リストの要素のいずれかを変更すると、この単一のリストが変更されます。

これを説明する別の例は、多次元配列の使用です。

あなたはおそらくこのような多次元配列を作ろうとしました:

>>> A = [[**None**] * 2] * 3

あなたがそれを印刷するならば、これは正しいように見えます:

>>> A
[[None, None], [None, None], [None, None]]

ただし、値を割り当てると、複数の場所に表示されます。

>>> A[0][0] = 5
>>> A
[[5, None], [5, None], [5, None]]

その理由は、でリストを複製し * てもコピーは作成されず、既存のオブジェクトへの参照のみが作成されるためです。3は、長さ2の同じリストへの3つの参照を含むリストを作成します。1つの行への変更はすべての行に表示されますが、これはほぼ確実に希望どおりではありません。

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

驚くほど素晴らしいDropMixミュージックミキシングカードゲームは30ドルで驚くべき取引です

驚くほど素晴らしいDropMixミュージックミキシングカードゲームは30ドルで驚くべき取引です

DropMixはNFC対応のカードゲームで、基本的にはリミックスアーティストになります。現在、Amazonでは$ 30まで下がっており、これまでで最高の価格に匹敵します。ロックバンドで有名なHarmonixによって開発されたDropMixは、おそらく少し野心的すぎるように思われます。結局のところ、ほとんどの人は素晴らしいリズムを持っていませんが、ゲームは驚くほどうまく実行されます。

メアリーJ.ブライジがついにハリウッドウォークオブフェイムスターを獲得

メアリーJ.ブライジがついにハリウッドウォークオブフェイムスターを獲得

写真:APメアリーJ.ブライジは、間もなくハリウッドウォークオブフェイムのスターを獲得します。これは、メアリーJよりもハリウッドウォークオブフェイムのほうが正直なところ恩恵です。

MeltdownとSpectreの脆弱性についてこれまでに知っていることはすべて、簡単な方法で説明されています

MeltdownとSpectreの脆弱性についてこれまでに知っていることはすべて、簡単な方法で説明されています

画像:グラズ工科大学/ NataschaEiblがデザインしたロゴ。MeltdownとSpectreは、攻撃者がシステムメモリに保存されているあらゆる種類の情報にアクセスできるようにする2つの脆弱性に付けられた名前です。

彼のニューヨークの家から追い出されようとしている97歳の第二次世界大戦の獣医。メリーエフィングクリスマス

彼のニューヨークの家から追い出されようとしている97歳の第二次世界大戦の獣医。メリーエフィングクリスマス

日本人に襲われたときに真珠湾にいた97歳の第二次世界大戦のベテランが、ニューヨークのブルックリンから追い出されています。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

投資ノート:Bioscout AU$300万シード

投資ノート:Bioscout AU$300万シード

Bioscoutは、農家を運転席に置くという使命を負っています。Artesian(GrainInnovate)やUniseedと並んで、最新のシードラウンドでチームを支援できることをうれしく思います。問題真菌症による重大な作物の損失は、農民にとって試練であることが証明されています。

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

遠隔医療は、パンデミック後の時代では新しいものではなく、時代遅れの分野でもありません。しかし、業界を詳しく見ると、需要と供給の強力な持続可能性と、米国で絶え間ない革命となる強力な潜在的成長曲線を示しています。

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

2021年は、世界的なベンチャーキャピタル(VC)の資金調達にとって記録的な年でした。DealStreetAsiaによると、東南アジアも例外ではなく、この地域では年間で記録的な25の新しいユニコーンが採掘されました。

ムーアの法則を超えて

ムーアの法則を超えて

計算に対する私たちの欲求とムーアの法則が提供できるものとの間には、指数関数的に増大するギャップがあります。私たちの文明は計算に基づいています—建築と想像力の現在の限界を超える技術を見つけなければなりません。

Language