听我说,我不是简单地希望有人为我解决这个问题。我知道它还没有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)
答案 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 comprehension的join 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()
方法。