如何在三列有逗号且无括号的行中打印三个列表 zip map 列表理解 join 一些评论:

我有三个Python列表

ListA
ListB
ListC

所有列表具有相同数量的元素。

我要以以下形状打印它们:

a0,b0,c0,a1,b1,c1,.
.
.

an,bn,cn

因此元素之间以及除最后一行外的每一行之后都有一个逗号。

Q53558217 回答:如何在三列有逗号且无括号的行中打印三个列表 zip map 列表理解 join 一些评论:

解决方案:

您可以使用zip和两个不同的联接来做到这一点:

',\n'.join([','.join(items) for items in zip(a,b,c)])

或如rafaelc建议的那样:

',\n'.join(map(','.join,zip(a,c)))

说明:

zip

zip按位置对您提供的不同可迭代元素进行分组。

zip(['a0','a1','a2',...],['b0','ba1','b2',['c0','c1','c2',...])

返回:

('a0','b0','c0'),('a1','b1','c1'),('a2','c2'),...

取决于您的Python版本,它可能会以列表或生成器的形式返回,但两者都是可迭代的,因此这不成问题。

map

map将作为第一个参数传递的函数应用于作为第二个参数传递的iterable的每个元素,并返回结果的iterable。

因此它将','.join应用于('a0','c0'),然后将','.join应用于('a1','c1'),...

','.join(('a0','c0')),','.join(('a1','c1')),'.join(('a2','c2')),...

以及其他联接,我们将拥有:

',\n'.join(   ',...   )

列表理解

列表理解是第一个解决方案中使用的而不是map,将','.join应用于可迭代对象的每个元素。

[','.join(item) for item in zip(a,c)]

等效于:

map(',c))

除了列表理解返回一个列表并且map调用返回一个可迭代对象,但这没有什么区别,因为外部联接接受可迭代对象,并且列表也是可迭代对象。

join

join生成一个字符串,将使用其作为参数的字符串作为分隔符,将作为参数传递的iterable的元素连接起来。

"-".join(['Hello','World'])

返回:

'Hello-World'

应用内部联接:

',\n'.join( [ 'a0,b0,c0','a1,b1,c1','a2,b2,c2',... ] )

然后套用外面的

'a0,c0,\na1,c1,\na2,c2,\n...'

一些评论:

它们可能只是您在此处简化问题的一部分:

  • 请勿将PascalCase名称用于变量,请使用snake_case。
  • 尝试避免使用定义变量类型的变量。
,

您可以将其压缩到行元素中,然后使用'%'格式化行输出。我可以想到的最简单的方法是删除最后一个逗号并换行以将输出读取到-2位置。此外,如果列表的长度为零(在边缘情况下也可以),这不会出错。

来源:

ListA = ['a0','a2']
ListB = ['b0','b2']
ListC = ['c0','c2']

output = ""

for row in zip(ListA,ListB,ListC):
    output += "%s,%s,\n" % row

output = output[:-2]
print(output)

输出:

a0,a1,a2,c2
,

鉴于所有元素都具有相同的长度,您可以在任何列表的range(len())的for循环中将其设置为一次打印:

ListA = ['a0','c2']


for i in range(len(ListA)):
    if i < (len(ListA)-1):
        print(ListA[i]+","+ListB[i]+","+ListC[i]+",")
    else:
        print(ListA[i]+","+ListC[i])

输出:

a0,c2
,
la = [1,2,3]
lb = [4,5,6]
lc = [7,8,9]

# zip the three lists
ls = zip(la,lb,lc)

#loop through the iterator
for i,v in enumerate(ls):
    # convert to string and replace the left curved bracket
    v = str(v).replace("(","")

    if (len(la) - i) == 1:
        print(v.replace(")",""))
        continue
    # replace the right curved bracket with ',' if it's not the last
    print(v.replace(")",","))

输出

1,4,7,3,6,9
,

最简单:

listA =[1,7]
listB =[11,7]
listC =[111,7]
length = len(listA) 
i = 0

# Iterating using while loop 
while i < length: 
    if (i<length-1):
        print(str(listA[i]) + ','+ str(listB[i])+ ','+ str(listC[i])+",")
    else:
         print(str(listA[i]) + ','+ str(listC[i]))
    i += 1
本文链接:https://www.f2er.com/3143588.html

大家都在问