2017-09-06 21 views
-2

なぜこのエラーを返すのか分かりません!!リストのリストを反復しています... TypeError: 'float'型の引数が反復不可能です

 for i in range(len(AmDeliveryPricelist)): 
     if AmDeliveryPricelist[i] == 'nan': continue 
     for j in range(len(AmDeliveryPricelist[i])): 
      AmPricelist[i][j] = re.findall(r'(?:\d+\.)?\d+.\d+', AmPricelist[i][j])[0] 
      if 'FREE' in AmDeliveryPricelist[i][j]: 
       AmDeliveryPricelist[i][j] = 0. 
      else: 
       AmDeliveryPricelist[i][j] = re.findall(r'(?:\d+\.)?\d+.\d+', AmDeliveryPricelist[i][j])[0] 

そして、これは誤りです:このコードは、なぜ

AmPricelist[:5] 
Out[39]: 
[['5.00', 
    '4.50', 
    '4.85', 
    '5.47', 
    '5.65', 
    '6.30', 
    '6.30', 
    '6.63', 
    '6.99', 
    '7.14', 
    '7.15', 
    '7.21', 
    '8.31', 
    '8.40', 
    '8.41', 
    '8.45', 
    '8.57', 
    '8.78', 
    '8.79', 
    '9.05', 
    '9.07', 
    '9.10', 
    '9.11', 
    '9.21', 
    '9.12', 
    '9.56', 
    '9.63', 
    '11.13', 
    '9.90', 
    '10.00', 
    '10.33', 
    '11.17', 
    '11.87', 
    '12.01', 
    '12.98', 
    '11.79', 
    '13.72', 
    '15.98', 
    '16.60'], 
['1.47', 
    '0.71', 
    '1.00', 
    '2.03', 
    '3.49', 
    '2.45', 
    '2.48', 
    '3.99', 
    '2.99', 
    '2.99', 
    '2.99', 
    '3.25', 
    '3.49', 
    '5.00', 
    '3.97', 
    '3.99', 
    '3.99', 
    '3.99', 
    '4.50', 
    '4.71', 
    '5.98', 
    '5.99', 
    '4.98', 
    '4.99', 
    '5.03', 
    '6.40', 
    '5.20', 
    '5.60', 
    '6.92', 
    '5.79', 
    '5.81', 
    '5.97', 
    '5.99', 
    '5.99', 
    '6.60', 
    '7.43', 
    '7.43', 
    '7.50', 
    '7.51', 
    '7.61', 
    '8.99', 
    '8.50', 
    '9.00', 
    '9.78', 
    '11.52', 
    '11.80', 
    '12.15', 
    '12.40'], 
['3.05', 
    '3.06', 
    '7.19', 
    '7.27', 
    '8.24', 
    '8.27', 
    '8.29', 
    '8.67', 
    '8.68', 
    '8.70', 
    '8.93', 
    '9.03', 
    '9.05', 
    '9.09', 
    '9.09', 
    '9.24', 
    '9.25', 
    '9.36', 
    '9.40', 
    '9.60', 
    '11.13', 
    '9.90', 
    '10.00', 
    '10.13', 
    '11.90', 
    '10.73', 
    '10.74', 
    '11.20', 
    '11.67', 
    '11.87', 
    '12.55', 
    '12.75', 
    '11.79', 
    '14.20', 
    '15.21', 
    '15.95', 
    '16.68', 
    '18.33', 
    '25.37'], 
['5.00', 
    '6.00', 
    '6.04', 
    '6.05', 
    '6.17', 
    '6.38', 
    '6.70', 
    '6.88', 
    '6.90', 
    '6.93', 
    '7.07', 
    '7.08', 
    '7.27', 
    '7.30', 
    '7.45', 
    '8.97', 
    '7.88', 
    '9.34', 
    '8.17', 
    '8.75', 
    '8.82', 
    '11.67', 
    '18.05', 
    '20.60'], 
['4.37', 
    '4.38', 
    '5.99', 
    '5.99', 
    '6.19', 
    '6.22', 
    '6.24', 
    '6.29', 
    '7.56', 
    '6.44', 
    '6.45', 
    '6.48', 
    '6.64', 
    '6.66', 
    '7.01', 
    '7.03', 
    '7.54', 
    '8.48', 
    '9.07', 
    '9.84', 
    '9.85', 
    '9.91', 
    '8.85', 
    '10.63', 
    '13.53', 
    '17.25', 
    '31.44']] 

AmDeliveryPricelist[:5] 
Out[41]: 
[[0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.49', 
    '1.26', 
    '1.26', 
    0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '2.80', 
    '1.26', 
    '1.26', 
    '1.26'], 
['1.26', 
    '2.03', 
    '2.03', 
    '1.26', 
    0.0, 
    '1.26', 
    '1.26', 
    0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    0.0, 
    0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    0.0, 
    '1.26', 
    '1.26', 
    0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26'], 
['1.26', 
    '1.26', 
    0.0, 
    0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.49', 
    0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '2.80', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26'], 
['1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    0.0, 
    '1.26', 
    0.0, 
    '1.49', 
    '1.26', 
    '2.80', 
    '1.26', 
    '1.26', 
    '1.26'], 
['1.26', 
    '1.26', 
    0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    0.0, 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.49', 
    '1.26', 
    '1.26', 
    '1.26', 
    '2.80', 
    '1.26', 
    '1.26', 
    '1.26', 
    '1.26']] 

は私がうまくいかないことができます。

Traceback (most recent call last): 

    File "<ipython-input-38-3098773b6c36>", line 6, in <module> 
    if 'FREE' in AmDeliveryPricelist[i][j]: 

TypeError: argument of type 'float' is not iterable 

コードはリストのリストを通る..ここでの例ですこのエラーで失敗します。私が言うことができる限り、私はそれがiterableである範囲を反復するように求めています。

そこにprint(i、j)を追加し、(0、0)を印刷した後にコードが壊れました。

助けていただけたら幸いです!あなたがあなたのコードが動作しない理由を尋ねたので

+0

'AmDeliveryPricelist [i] [j]'は浮動小数点型ですが、floatでは 'in'を使用できません。 '' 0.0 'で' FREE 'は例外をスローします。おそらくリストに文字列と浮動小数点数(0.0の値)を混ぜてはいけません。 –

+0

が見つかりました!ありがとうございます –

答えて

1

は、ここに答えます:このif文で

、あなたはstringfloatに属しているかどうかを確認しようとしている。

if 'FREE' in AmDeliveryPricelist[i][j]: 
    AmDeliveryPricelist[i][j] = 0. 

私はこれがあなたが望む行動だとは思わないので、これを見てください!それが助けて欲しい!

+0

ええ、それはかなり正しいです、私はちょうど価格の周りにstr()を追加する必要がありました。私はそれがすべて弦として入って来るように設計しましたが、どこかで厄介な0.0の浮きが見つかりました!助けを求めるty –

関連する問題