def visit_ListComp(self, node):
"""
ListComp(expr elt, comprehension* generators)
"""
#if isinstance(node.generators[0].iter, (ast.Tuple, ast.List)):
# i = "[%s]" % self.visit(node.generators[0].iter)
#else:
# i = self.visit(node.generators[0].iter)
i = self.visit(node.generators[0].iter) # ast.Tuple, ast.List, ast.*
if isinstance(node.generators[0].target, ast.Name):
t = self.visit(node.generators[0].target)
else:
# ast.Tuple
self._tuple_type = ''
t = self.visit(node.generators[0].target)
self._tuple_type = '[]'
if len(node.generators[0].ifs) == 0:
""" <Python> [x**2 for x in [1,2]]
<Ruby> [1, 2].map{|x| x**2} """
return "%s.map{|%s| %s}" % (i, t, self.visit(node.elt))
else:
""" <Python> [x**2 for x in [1,2] if x > 1]
<Ruby> [1, 2].select {|x| x > 1 }.map{|x| x**2} """
return "%s.select{|%s| %s}.map{|%s| %s}" % \
(i, t, self.visit(node.generators[0].ifs[0]), t, \
self.visit(node.elt))
评论列表
文章目录