web-dev-qa-db-ja.com

Pythonのリストにsum()関数を使用するにはどうすればよいですか?

私は宿題をしていて、合計()およびlen()関数を使用して入力数値リストの平均を見つける必要があります。sum()を使用してリストの合計を取得しようとすると、エラーが発生しましたTypeError:+のサポートされていないオペランドタイプ: 'int'および 'str'。以下は私のコードです:

numlist = input("Enter a list of number separated by commas: ")

numlist = numlist.split(",")

s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:",m)
8
user1275189

問題は、入力から読み取るときに、文字列のリストがあることです。あなたは2行目としてそのようなことをすることができます:

numlist = [float(x) for x in numlist]
13
Zenon

問題は、文字列のリストがあることです。合計を計算する前に、それらを整数に変換する必要があります。例えば:

numlist = numlist.split(",")
numlist = map(int, numlist)
s = sum(numlist)
...
10
Justin Ethier

数値ではなく文字列を合計しています。これがエラーメッセージの意味です。

すべての文字列をそれぞれの整数に変換します。

_numlist = map(int, numlist)
_

そして、平均を取ります(私はfloat()をあなたとは異なる方法で使用していることに注意してください):

_arithmetic_mean = float(sum(numlist)) / len(numlist)
_

分割する前にfloat()float(1/2) = float(0) = 0.0として使用したいのですが、これはあなたが望むものではありません。

代わりに、最初にそれらをすべてfloatにすることもできます。

_numlist = map(float, numlist)
_
4
Blender

入力された文字列をfloat値のリストに変換します。これが更新されたコードです。

numlist = list(map(int,input("Enter a list of number separated by commas: ").split(',')))
l = len(numlist)
s = sum(numlist)
print("mean :",s/l)
0
DataCruncher

Splitは文字列の配列を返すため、関数sumを使用する前にこれらを整数に変換する必要があります。

0
franka

Python 2.7の場合

numlist = map(int,raw_input().split(","))
s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:"+ str(m))
0

これを試すことができます。

reduce(lambda x,y:x+y, [float(x) for x in distance])