3

私の問題: この文字列にすべての数字を追加したいのです'1.14,2.14,3.14,4.14'が、カンマが原因で sum 関数が正しく機能しません。
ストリップ関数を使用すると問題が解決すると考えましたが、まだ不足しているものやよく理解していないものがあるようです。

total = 0
for c in '1.14,2.14,3.14'.strip(","):
    total = total + float(c)
print total

文字列からカンマを削除する方法を検索しましたが、文字列の先頭または末尾からカンマを削除する方法に関する情報しか見つかりませんでした。

追加情報: Python 2.7

4

8 に答える 8

8

私は以下を使用します:

# Get an array of numbers
numbers = map(float, '1,2,3,4'.split(','))

# Now get the sum
total = sum(numbers)
于 2013-04-01T17:20:14.023 に答える
4

あなたはしたくないstrip、あなたがしたいsplit

このsplit関数は、あなたのケースでは、渡した区切り文字を使用して、文字列を配列に分割しますsplit(',')

于 2013-04-01T17:20:22.993 に答える
1

する必要はありsplitませんstrip

>>> for c in '1,2,3,4,5,6,7,8,9'.split(","):
    print float(c)

1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0

または、リスト内包表記が必要な場合:

>>> [float(c) for c in '1,2,3,4,5,6,7,8,9'.split(",")]
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]

そして、合計を取得するために、

>>> sum(map(float, '1,2,3,4,5,6,7,8,9'.split(",")))
45.0
于 2013-04-01T17:35:06.407 に答える
1

これを使用してコンマと空白を削除します

a = [1,2,3,4,5]
print(*a, sep = "")

出力:- 12345

于 2020-02-19T12:07:19.360 に答える
0

フロートの入力リストにパターンがあるように見えるため、このワンライナーでそれを生成します。

>>> sum(map(float, ','.join(map(lambda x:str(x+0.14), range(1,5))).split(',')))
10.559999999999999

そして、コンマで結合してすぐにコンマで分割するのはあまり意味がないので、少しまともなコードを次に示します。

>>> sum(map(float, map(lambda x:str(x+0.14), range(1,5))))
10.559999999999999



そして、実際の浮動小数点数ではなく、1 桁を合計することを実際に意味していた場合 (ただし、サンプル コードで浮動小数点数にキャストしたため、疑いがあります):

>>> sum(map(int, ''.join(map(lambda x:str(x+0.14), range(1,5))).replace('.', '')))
30
于 2013-04-01T17:26:53.450 に答える