python - 使用 map(function, list) 来转换对象而不返回列表是否合适?

标签 python object dictionary

我这里有一个“最佳实践”问题。我以一种可能不打算使用的方式使用 map - 使用列表的元素来更改不同对象的状态。最终列表输出实际上并没有改变。这样合适吗?

例如:

 class ToBeChanged(object):
      def __init__(self):
           self.foo_lst = [1,2,3,4]
      def mapfunc(self, arg):
           if arg in ['foo', 'bar']:
               self.foo_lst.append(arg)
           else:
               pass

 test = ToBeChanged()
 list_to_map = [1,2,37,'foo']

 map(lambda x: test.mapfunc(x), list_to_map)

最佳答案

不合适。在 Python 2 中,您将创建一个与 list_to_map 长度相同的新列表,并立即丢弃它;浪费! lambda 甚至使它变得更加复杂。

最好使用 for 循环:

for x in list_to_map:
    test.mapfunc(x)

更简洁易读。

如果您仍在考虑在 Python 3 中使用它(通过强制以某种方式评估惰性对象),请考虑那些将维护您的代码的人; map 给人的印象是您想从列表中创建一个新的可迭代对象。

关于python - 使用 map(function, list) 来转换对象而不返回列表是否合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42226067/

相关文章:

python - 使用 os.environ.setdefault 安全吗?

python - 用 pandas 和 matplotlib_venn 绘制维恩图

python - Tkinter, 'module' 对象没有属性 'Frame'

Python:如何根据值的顺序在 pandas df 中生成两个新列?

javascript - 使用对象访问属性值

c# - 创建由数据库驱动的对象来填充 TreeView - 非常慢

javascript - 根据现有对象数组的几个属性返回新的对象数组

python - 如何获取Numba字典的大小?

python - 创建一个新字段,重复项设为 1,非重复项设为 0

java - 以 HashMap<string,integer> 作为其类型对 TreeSet 进行排序