如何在列表中的列表中打印项目

时间:2015-12-19 02:02:03

标签: python

听我说,我不是简单地希望有人为我解决这个问题。我知道它还没有100%完成,但是目前当我运行该程序时,我收到的错误是关于"无法转换' list'反对str含义"我正在寻求如何解决这个问题的帮助以及为什么会这样做。

这是问题

编写代码以打印列表列表中的每件事物,L,用' *'之后喜欢

  

1 * 2 * 3 * 4 * ... 8 * A * B * C * d *

这需要知道print语句并使用end或sep参数选项

这是我的清单,抱歉没有把它放在早先的

L = [[1,2,3,4],[5,6,7,8],[' a',' b',' c& #39;,' d']]

这是我目前的代码

def ball(x): #random function name with one parameter
    q = ''   #
    i = 0
    if type(x) != list:    #verifies input is a list
        return"Error"
    for i in x:    #Looks at each variable in list
        for j in i:    #Goes into second layer of lists
            q = q + j + '*'
    print(q)

2 个答案:

答案 0 :(得分:0)

如果你有一个字符串列表,

myList = ['a', '123', 'another', 'and another']

您可以使用str.join功能加入他们:

  

有关method_descriptor的帮助:

     

加入(...)       S.join(可迭代) - >串

Return a string which is the concatenation of the strings in the
iterable.  The separator between elements is S.
myString = '#'.join(myList)

如果您的列表包含混合类型或非字符串,则需要先将每个项目转换为字符串:

anotherList = [1, 2, 'asdf', 'bwsg']
anotherString = '*'.join([str(s) for s in anotherList])

您可能希望阅读有关list comprehensionjoin function或更多内容。注意,上面没有打印输出(除非你使用交互式控制台),如果你想打印输出你也需要打印电话

print myString
print anotherString

而且,如果您正在使用列表列表,则可能需要更改将每个子列表转换为字符串的方式(取决于您所需的输出):

myListList = [[1, 2, 3, 4], [2, 3, 6, 5], [6, 4, 3, 1]]
myOtherString = '#'.join(['*'.join([str(s) for s in a]) for a in myListList])

最后一行读起来有点复杂,您可能希望将其重写为嵌套for循环。

答案 1 :(得分:0)

出错的原因

  

“无法将'list'对象隐式转换为str”

是你在嵌套的for循环中使用了错误的变量。在将值与q变量连接的位置,如果需要q = q + i,则会错误地放置q = q + j。您还希望将j的值转换为字符串,以便它可以与q连接。为了获得所需的输出,您只需在该语句中添加一个星号 - 如下所示:q = q + str(j) + '*'。在完全不相关的注释中,应该完全删除else中只有"Mistake"的{​​{1}}语句 - 它不会跟随if并且它实际上不会返回或分配给变量。

请注意, 这是解决此问题的最佳方式。我同意ilent2你应该看一下列表理解和str.join()方法。