2016-12-23 22 views
-2

私は関数に2つのリストを渡したいと思います。私のプログラムの目的は、Gauss Jordan Methodを使って3つの線形方程式の系を解くことです。Pythonの関数への引数としてリストを渡す方法

File "C:/Users/madhuri/Desktop/gauss.py", line 29, in mhello 
    elim(1,lista,listb) 
    File "C:/Users/madhuri/Desktop/gauss.py", line 6, in elim 
    list_b[i]=list_b[i]+r*list_a[i] 
TypeError: 'tuple' object does not support item assignment 

私が間違ってやっている何を:私は値を入力しないとき

import sys 
from tkinter import * 

def elim(x,list_a,list_b): 
    r=-list_b[x]/list_a[x] 
    for i in range(x-1,len(list_b)+1): 
     list_b[i]=list_b[i]+r*list_a[i] 
    return list_b 

def mhello(): 
    ma1=a1.get() 
    ma2=a2.get() 
    ma3=a3.get() 
    ma4=a4.get() 
    mb1=b1.get() 
    mb2=b2.get() 
    mb3=b3.get() 
    mb4=b4.get() 
    mc1=c1.get() 
    mc2=c2.get() 
    mc3=c3.get() 
    mc4=c4.get() 
lista=(int(ma1),int(ma2),int(ma3),int(ma4)) 
listb=(int(mb1),int(mb2),int(mb3),int(mb4)) 
listc=(int(mc1),int(mc2),int(mc3),int(mc4)) 

elim(1,lista,listb) 
print(listb) 

、私は次のエラーを取得しますか? ファンクションにリストを引数として渡すにはどうすればよいですか? リストを返すにはどうしたらいいですか?

+0

リストとタプルは異なるものです。リストではないタプルを送信しています。さらに読む:[リストとタプルの違いは何ですか?](http://stackoverflow.com/questions/626759/whats-the-difference-between-lists-and-tuples) – Lafexlos

+0

さらに、あなたはあなたのelim関数のIndexError – acushner

答えて

3

あなたはリストを渡していません。コンマで区切った値をかっこで囲む(または除外する)と、リストではなくタプルのインスタンスが生成されます。

タプルが不変なコレクションであるため、そのタプルの要素にlist_b[i] = ...を代入しようとすると、関数にタプルを送信するという事実が失敗します。

あなたは括弧で囲む必要がありリストが必要な場合:

lista= [int(ma1),int(ma2),int(ma3),int(ma4)] 
listb= [int(mb1),int(mb2),int(mb3),int(mb4)] 
listc= [int(mc1),int(mc2),int(mc3),int(mc4)] 
+0

私はそのビットを見落としたと信じられない! – user8244

関連する問題