Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python2到3 list()的使用_Python_Python 2.7_Python 3.x - Fatal编程技术网

python2到3 list()的使用

python2到3 list()的使用,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我正在将python2.7脚本转换为python3。 2to3提出以下建议: result = result.split(',') syslog_trace("Result : {0}".format(result), False, DEBUG) - data.append(map(float, result)) + data.append(list(map(float, result))) i

我正在将python2.7脚本转换为python3。
2to3
提出以下建议:

         result        = result.split(',')
         syslog_trace("Result   : {0}".format(result), False, DEBUG)

-        data.append(map(float, result))
+        data.append(list(map(float, result)))
         if (len(data) > samples):
           data.pop(0)
         syslog_trace("Data     : {0}".format(data),   False, DEBUG)

         # report sample average
         if (startTime % reportTime < sampleTime):
-          somma       = map(sum, zip(*data))
+          somma       = list(map(sum, list(zip(*data))))
           # not all entries should be float
           # 0.37, 0.18, 0.17, 4, 143, 32147, 3, 4, 93, 0, 0
           averages    = [format(sm / len(data), '.3f') for sm in somma]
result=result.split(','))
syslog_跟踪(“结果:{0}”。格式(结果),False,调试)
-data.append(映射(浮点、结果))
+data.append(列表(映射(浮点、结果)))
如果(len(数据)>样本):
data.pop(0)
syslog_跟踪(“数据:{0}”。格式(数据),False,调试)
#报告样本平均数
如果(开始时间%reportTime
我相信Python3的制造商不想这样做。至少,它给我一种“你一定是在开玩笑”的感觉

有没有更像蟒蛇的方法

我相信Python3的制造商不想这样做

好吧,Python的制造商通常不喜欢看到Python 2被使用,我在最近的每一次PyCon中都看到了这种情绪

有没有更像蟒蛇的方法

这实际上取决于你对Pythonic的解释,列表comp在你的例子中似乎更直观,你想要构造一个
列表
,所以不需要创建一个带有
map
zip
的迭代器,然后将它馈送到
list()

现在,我不知道为什么
2to3
选择了
list()
包装而不是comps;可能是最容易实际实现的

我相信Python3的制造商不想这样做

好吧,Python的制造商通常不喜欢看到Python 2被使用,我在最近的每一次PyCon中都看到了这种情绪

有没有更像蟒蛇的方法

这实际上取决于你对Pythonic的解释,列表comp在你的例子中似乎更直观,你想要构造一个
列表
,所以不需要创建一个带有
map
zip
的迭代器,然后将它馈送到
list()


现在,我不知道为什么
2to3
选择了
list()
包装而不是comps;可能最容易实际实现。

未固定的
somma有什么问题

2to3
无法知道如何使用
somma
,在这种情况下,作为下一行中的生成器来计算
平均值
是正常的,也是最佳的,无需将其转换为列表

这就是Python3列表到生成器更改的天才之处:大多数人已经将这些列表用作生成器,浪费宝贵的内存来具体化他们不需要的列表

     # report sample average
     if (startTime % reportTime < sampleTime):
      somma       = map(sum, zip(*data))
       # not all entries should be float
       # 0.37, 0.18, 0.17, 4, 143, 32147, 3, 4, 93, 0, 0
       averages    = [format(sm / len(data), '.3f') for sm in somma]
#报告样本平均值
如果(开始时间%reportTime
当然,第一个未转换的语句将失败,因为我们附加了一个生成器,而我们需要一个列表。在这种情况下,错误会很快得到修复

如果像这样放置:
data.append(map(float,result))
,则下一个跟踪显示可疑的信息:
'data:[]'
,您可以按照
2to3
的建议快速切换到
list

2to3
尽最大努力创建运行的Python 3代码,但它不会取代手动返工或生成最佳代码。当你很匆忙的时候,你可以应用它,但是要像OP一样检查与旧代码的区别


最新Python2版本的
-3
选项在使用Python3引发错误时打印警告。这是另一种方法,当您有更多的时间执行迁移时效果会更好。

未固定的
somma有什么问题

2to3
无法知道如何使用
somma
,在这种情况下,作为下一行中的生成器来计算
平均值
是正常的,也是最佳的,无需将其转换为列表

这就是Python3列表到生成器更改的天才之处:大多数人已经将这些列表用作生成器,浪费宝贵的内存来具体化他们不需要的列表

     # report sample average
     if (startTime % reportTime < sampleTime):
      somma       = map(sum, zip(*data))
       # not all entries should be float
       # 0.37, 0.18, 0.17, 4, 143, 32147, 3, 4, 93, 0, 0
       averages    = [format(sm / len(data), '.3f') for sm in somma]
#报告样本平均值
如果(开始时间%reportTime
当然,第一个未转换的语句将失败,因为我们附加了一个生成器,而我们需要一个列表。在这种情况下,错误会很快得到修复

如果像这样放置:
data.append(map(float,result))
,则下一个跟踪显示可疑的信息:
'data:[]'
,您可以按照
2to3
的建议快速切换到
list

2to3
尽最大努力创建运行的Python 3代码,但它不会取代手动返工或生成最佳代码。当你很匆忙的时候,你可以应用它,但是要像OP一样检查与旧代码的区别


最新Python2版本的
-3
选项在使用Python3引发错误时打印警告。这是另一种方法,当您有更多的时间执行迁移时效果会更好。

可能是列表理解<代码>[结果中x的浮动(x)]
@zondo:谢谢。我将调查列表理解。这是否也适用于
映射(sum,zip(*data))
?是的。使用
[sum(d)for d in zip(*data)]
这是中提到的“快速修复”,这也建议使用列表comps代替。
2to3
旨在翻译Pyth