【问题标题】:Writing a nested loop in python [duplicate]在python中编写嵌套循环[重复]
【发布时间】:2016-01-18 20:51:04
【问题描述】:

我是一名 Python 初学者,正在努力编写使用列表 myList = [['A','B','C'],[4,5,​6],[7,8,9]] 并生成以下输出的代码:

输入:

myList = [['A','B','C'],[4,5,​6],[7,8,9]]

预期输出:(按行)

-A-B-C-
-4-5-6-
-7-8-9-

我尝试了一些不同的方法,但不确定如何处理同一列表中字符串和整数的汇合。

我可以得到:

>>> for i in range (0,myList_len):
...     print ("-".join(myList[i]))
... 
A-B-C

但我不能让它为数字工作。任何帮助将不胜感激!

【问题讨论】:

  • 您需要帮助或问题已解决?如果有帮助,请先阅读您遇到的数字错误。然后尝试修复它。 Aaaaaand,就是这样(对于这种情况)。
  • myList_len 是从哪里来的?可以直接迭代列表:for i in myList:.
  • 你怎么知道它不起作用?

标签: python loops nested nested-loops


【解决方案1】:

您可以使用mapint 转换为str

for l1 in myList:
   print '-' + '-'.join(map(str, l1)) + '-'

【讨论】:

    【解决方案2】:

    当您尝试加入号码时,您会收到以下错误:

    TypeError: sequence item 0: expected str instance, int found
    

    这是因为 str.join() 仅适用于可迭代对象中的 str 项,但您将其传递给 int 对象。

    因此,为了正确加入它们,您需要先将它们转换为字符串。您可以通过使用map 对每个项目调用str 或使用列表推导来做到这一点:

    >>> lst = [4, 5, 6]
    >>> '-'.join(map(str, lst))
    '4-5-6'
    >>> '-'.join([str(x) for x in lst])
    '4-5-6'
    

    【讨论】:

      【解决方案3】:

      “join”运算符需要一个字符串列表,因此您必须先将数字转换为字符串,使用“str”运算符将任何内容转换为字符串。

      for l in myList:
         print '-' + '-'.join([str(x) for x in l]) + '-'
      

      【讨论】:

      • 正确。我修好了:-)
      【解决方案4】:

      join 适用于字符串,而不是数字。你需要转换:

      print ("-".join(str(num) for num in myList[i]))
      

      现在,只需在开头和结尾添加连字符,就完成了。

      【讨论】:

        【解决方案5】:

        尝试以下方法:

        for sublist in myList:
            print("-".join(map(str, sublist)))
        

        输出是:

        A-B-C
        4-5-6
        7-8-9
        

        如果您还想要前导和尾随连字符,请使用:

        for sublist in myList:
            print("-" + "-".join(map(str, sublist)) + "-")
        

        输出是:

        -A-B-C-
        -4-5-6-
        -7-8-9-
        

        for 循环遍历子列表。 map(str, sublist) 调用将str 应用于子列表的每个元素,将其转换为字符串。如果没有这个,您的非字符串条目(即数字)在传递给 join 时会导致错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          • 2017-07-24
          相关资源
          最近更新 更多