summaryrefslogtreecommitdiff
path: root/numpy/lib/npyio.py
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2013-04-09 12:44:24 -0600
committerCharles Harris <charlesr.harris@gmail.com>2013-04-10 16:41:13 -0600
commita6164794a63215e23fa28432d9acec4727c68d02 (patch)
treee1f1cb2da6aac69cb3410b623fcf224ec433d1a4 /numpy/lib/npyio.py
parentf85bdf48aadf7b5a5f575370b589805fed190a6c (diff)
downloadnumpy-a6164794a63215e23fa28432d9acec4727c68d02.tar.gz
2to3: Apply `map` fixer.
In Python 3 `map` is an iterator while in Python 2 it returns a list. The simple fix applied by the fixer is to inclose all instances of map with `list(...)`. This is not needed in all cases, and even where appropriate list comprehensions may be preferred for their clarity. Consequently, this patch attempts to use list comprehensions where it makes sense. When the mapped function has two arguments there is another problem that can arise. In Python 3 map stops execution when the shortest argument list is exhausted, while in Python 2 it stops when the longest argument list is exhausted. Consequently the two argument case might need special care. However, we have been running Python3 converted versions of numpy since 1.5 without problems, so it is probably not something that affects us. Closes #3068
Diffstat (limited to 'numpy/lib/npyio.py')
-rw-r--r--numpy/lib/npyio.py21
1 files changed, 11 insertions, 10 deletions
diff --git a/numpy/lib/npyio.py b/numpy/lib/npyio.py
index 7f66fb141..600ab4a36 100644
--- a/numpy/lib/npyio.py
+++ b/numpy/lib/npyio.py
@@ -1602,7 +1602,7 @@ def genfromtxt(fname, dtype=float, comments='#', delimiter=None,
# Upgrade the converters (if needed)
if dtype is None:
for (i, converter) in enumerate(converters):
- current_column = map(itemgetter(i), rows)
+ current_column = [itemgetter(i)(_m) for _m in rows]
try:
converter.iterupgrade(current_column)
except ConverterLockError:
@@ -1653,18 +1653,19 @@ def genfromtxt(fname, dtype=float, comments='#', delimiter=None,
# Convert each value according to the converter:
# We want to modify the list in place to avoid creating a new one...
-# if loose:
-# conversionfuncs = [conv._loose_call for conv in converters]
-# else:
-# conversionfuncs = [conv._strict_call for conv in converters]
-# for (i, vals) in enumerate(rows):
-# rows[i] = tuple([convert(val)
-# for (convert, val) in zip(conversionfuncs, vals)])
+ #
+ # if loose:
+ # conversionfuncs = [conv._loose_call for conv in converters]
+ # else:
+ # conversionfuncs = [conv._strict_call for conv in converters]
+ # for (i, vals) in enumerate(rows):
+ # rows[i] = tuple([convert(val)
+ # for (convert, val) in zip(conversionfuncs, vals)])
if loose:
- rows = zip(*[map(converter._loose_call, map(itemgetter(i), rows))
+ rows = zip(*[[converter._loose_call(_r) for _r in map(itemgetter(i), rows)]
for (i, converter) in enumerate(converters)])
else:
- rows = zip(*[map(converter._strict_call, map(itemgetter(i), rows))
+ rows = zip(*[[converter._strict_call(_r) for _r in map(itemgetter(i), rows)]
for (i, converter) in enumerate(converters)])
# Reset the dtype
data = rows