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']