Python 3-Migration> TypeError: muss eine reelle Zahl sein, keine Kartenunterstützung> ändere map () in list (map ())

Betriebsumgebung


Xeon E5-2620 v4 (8 Kerne) x 2
32GB RAM
CentOS 6.8 (64bit)
openmpi-1.8.x86_64 und seine-devel
mpich.x86_64 3.1-5.el6 und seine-devel
gcc version 4.4.7 (Und Gfortran)
NCAR Command Language Version 6.3.0
WRF v3.7.Verwende 1.
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) 
Python 3.6.0 on virtualenv

Der folgende Code war in Python 2 in Ordnung.

test_numpy_170317.py


#!/usr/bin/env python

import numpy as np

vals = map(float, [3., 1., 4.])
total_val = np.sum(vals)
print('total: %.2f' % total_val)

Wenn ich es unter Python 3 ausführe, wird folgende Fehlermeldung angezeigt:

Traceback (most recent call last):
  File "test_numpy_170317.py", line 7, in <module>
    print('total: %.2f' % total_val)
TypeError: must be real number, not map

In Python 2 hat map () ein Listenobjekt zurückgegeben. In Python 3 scheint das, was von map () zurückgegeben wird, ein Kartenobjekt zu sein.

Referenz http://stackoverflow.com/questions/1303347/getting-a-map-to-return-a-list-in-python-3-x

Durch das Einschließen des Kartenobjekts in list () verschwand der Fehler.

test_numpy_170317.py


#!/usr/bin/env python

import numpy as np

vals = list(map(float, [3., 1., 4.]))
total_val = np.sum(vals)
print('total: %.2f' % total_val)

Recommended Posts

Python 3-Migration> TypeError: muss eine reelle Zahl sein, keine Kartenunterstützung> ändere map () in list (map ())
Hat sich nicht von Python 2 auf 3 geändert
TypeError: mul (): argument'other '(Position 1) muss Tensor sein, nicht List Solution for error
Was tun, wenn bei Verwendung von strptime "TypeError: muss Zeichenfolge sein, nicht int ..." angezeigt wird
Es war eine schmerzhafte Erinnerung, als mir TypeError gesagt wurde: Muss type sein, nicht class obj, wenn versucht wird, mit Python zu erben
[Python] Ändern Sie den Namen der Bilddatei in eine Seriennummer
[Python] Es kann nützlich sein, die Datenrahmen aufzulisten