【问题标题】:How to print a for loop in the function without using return in python?如何在函数中打印for循环而不在python中使用return?
【发布时间】:2018-05-23 02:00:57
【问题描述】:

我有一个 python 程序,它从 XML 文件中获取一个值并将其与给定的代码匹配,但我不知道如何在某些条件下打印该值。

我的 Python 程序是:

class setMap(getXml):

    def __init__(self, event_log_row):
        self.event_log_row = event_log_row

    def code(self):
        for each in self.event_log_row:
            self.get_map(each)
        # if I use return here, it basically returns only one value, which is understandable.            

    def get_map(self, event_code):
        dict_class = getXml() # Getting XML from another class
        dictionary = dict_class.getdescription()
        for keys, values in dictionary.items():
            if keys == event_code:
                return values  

# I'm not allowed to use for loop or any conditions after this 
code = ['1011', '1015', '1013']
obj = setMap(code)
print(obj.code())

是否有可能实现我打算实现的目标,请有人给我一些建议。

谢谢

【问题讨论】:

  • python 2.x 还是 3.x ?还是您需要 100% 兼容的代码?

标签: python python-3.x python-2.7


【解决方案1】:

您可以使用list comprehension:

    def code(self):
        return [self.get_map(each) for each in self.event_log_row]

[print(x) for x in obj.code()]

【讨论】:

  • 感谢 jspcal,它可以工作,但它会打印在同一行,例如:[Value1, value 2, value 3],即使我使用了 print(list(obj.code()) )。无论如何我可以打印列表,而不使用 for 循环。
  • 你可以print('\n'.join(str(m) for m in obj.code())
  • 列出带有打印副作用的comp?
  • [print(x) for x in obj.code()] 成功了,谢谢大家
【解决方案2】:

如果你得到一个结果

result  = [["One","Two"],["Three"], ["Four","Five","Six"]]        # obj.code() result

从您的setMap.code(),您可以使用

打印此内容
result  = [["One","Two"],["Three"], ["Four","Five","Six"]]

print(*result, sep ="\n") # unpack outer list for printing 

print( *(b for a in result for b in a), sep ="\n") # flatten inner lists, unpack

导致

['One', 'Two']
['Three']
['Four', 'Five', 'Six']

One
Two
Three
Four
Five
Six

您指定换行符的打印分隔符以使它们进入不同的行,不需要字符串连接。

九月详情:What does print(... sep='', '\t' ) mean? 或 Doku print()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 2014-09-22
    • 2020-02-04
    • 2019-01-18
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多