Python 如何打印没有括号的列表?

Python 如何打印没有括号的列表?,python,python-2.7,Python,Python 2.7,这是一个允许我打印两个列表的函数,cursorsarreglo和tareasArreglo,但是当我打印它们时,它们是这样的:[['qwert'],['fisica']] 我们的首要任务是: 如何打印没有括号的两个列表 def verTareas(): print("") print("Saludos "+nombre+(" a continuacion puede ver su informacion")) print("") print("Esta es l

这是一个允许我打印两个列表的函数,
cursorsarreglo
tareasArreglo
,但是当我打印它们时,它们是这样的:
[['qwert'],['fisica']]
我们的首要任务是:

如何打印没有括号的两个列表

def verTareas():
    print("")
    print("Saludos "+nombre+(" a continuacion puede ver su informacion"))
    print("")
    print("Esta es la lista de cursos asignados: ")
    print str(cursosArreglo)
    print("Esta es la lista de tareas y sus prioridades: ")
    print '\n'+str(tareasArreglo)
    print("")
    regresar()

对于列表列表,
lst
只需在展平后使用带有合适分隔符的
join
。您可以使用
itertools
模块的
chain
来展平列表:

from itertools import chain

lst = [['zxcvb'], ['4'], ['nbvcx'], ['3'], ['tregd'], ['2'], ['bvxx'], ['3']]
flat_lst =  list(chain.from_iterable(lst))
print ','.join(flat_lst)

您需要展平列表,然后将其加入,例如,使用嵌套的
join
s:

>>> data = [['zxcvb'], ['4'], ['nbvcx'], ['3'], ['tregd'], ['2'], ['bvxx'], ['3']]
>>> print ", ".join("".join(s) for s in data)
zxcvb, 4, nbvcx, 3, tregd, 2, bvxx, 3

这里有一些代码可以在没有任何模块或任何东西的情况下工作

for i in range(len(cursosArreglo)):
    cursosArreglo[i] = "".join(cursosArreglo[i])

print(", ".join(cursosArreglo))
您还可以通过将它替换为
cursorsarreglo
来为
tareasareglo
运行此命令

首先浏览列表列表,然后使用字符串版本替换列表中的每个点,然后再次使用
str.join
完全加入列表

这也可以压缩成一行。

strCursosArreglo = ", ".join("".join(i) for i in cursosArreglo)

您还可以使用
lambda
,以下代码:

>>> func= lambda lst: [m for i in lst for m in func(i)] if type(lst) is list else [lst]
>>> lst = [['zxcvb'], ['4'], ['nbvcx'], ['3'], ['tregd'], ['2'], ['bvxx'], ['3']]
>>> func(lst)
['zxcvb', '4', 'nbvcx', '3', 'tregd', '2', 'bvxx', '3']
或者


看见此处可能与生成器表达式或平面映射结合使用。@user2864740我尝试过,但出现以下错误:描述符“join”需要一个“str”对象,但收到一个“list”@luispe str.join在str[ings]序列中工作,您有一个列表序列。首先将其转换为字符串序列。(我认为创建列表的代码可能是意外地创建了一个元素的内部列表-它们看起来没有用处,因此可能在源代码处删除它们。)通过迭代字符串
cursorsarreglo
本身而不是其长度,可以进一步减少这种情况吗?我的意思是
对于cursorsarreglo中的I
而不是
对于范围内的I(len(cursorsarreglo))
@Matthew0898它可以,但是你必须使用
索引
。我更喜欢这样,或者您可以使用enumerate(),
作为enumerate(Cursorsarreglo)中的I,s:
,尽管我不明白您为什么要重新分配到列表中。在理解中,您完全可以在没有索引的情况下迭代列表(生成器更好)
“,”.join(“.join(s)for s in cursorsarreglo)
@achampion这是一个非常好的主意。这会被视为列表理解还是生成器表达式?删除
[]
将使其成为生成器,即它不会填充整个列表,并将执行延迟到需要时。
>>> func=lambda L: sum(map(func, L), []) if isinstance(L, list) else [L]
>>> func(lst)
['zxcvb', '4', 'nbvcx', '3', 'tregd', '2', 'bvxx', '3']