1

最近、Python 2.7 でコーディングを開始しました。私は分子生物学者です。次のようなリストの作成を含むスクリプトを書いています。

mylist = [[0, 4, 6, 1], 102]

これらのリストは、アイテムを mylist[0] に追加し、値を mylist[1] に合計することによってインクリメントされます。

これを行うには、次のコードを使用します。

def addres(oldpep, res):
    return [oldpep[0] + res[0], oldpep[1] + res[1]]

これはうまくいきます。mylist[0] は少し長くなる可能性があり、何百万ものこれらのリストを処理する必要があるため、append または extend を使用するとコードが高速になる可能性があると考えたので、試しました:

def addres(pep, res):
    pep[0].extend(res[0])
    pep[1] += res[1]
    return pep

私の考えでは、同じ結果が得られるはずです。任意のリストで試してみると、同じ結果が得られますしかし、それを何百万ものリストにフィードすると、まったく異なる結果が得られます。それで... 2つの違いは何ですか?スクリプトの残りの部分はすべてまったく同じです。ありがとうございました!ロベルト

4

2 に答える 2

0

リストは、参照によって渡される Python のオブジェクトです。

a=リスト()

これは、a がリストであることを意味するのではなく、作成したばかりのリストを指しているという意味です。

最初の例では、リスト要素を使用して新しいリスト、別のオブジェクトを作成していますが、2 番目の例ではリストの内容自体を変更しています。

于 2013-11-06T21:32:16.757 に答える