Python 如何打印三行三列的列表,其中三列有逗号,没有括号

Python 如何打印三行三列的列表,其中三列有逗号,没有括号,python,arrays,list,numpy,Python,Arrays,List,Numpy,我有三个Python列表 ListA ListB ListC 所有列表都有相同数量的元素 我想按以下形状打印它们: a0, b0, c0, a1, b1, c1, . . . an, bn, cn 因此,除了最后一行之外,元素之间和每行后面都有一个逗号。解决方案: 您可以通过使用zip和两种不同的连接来完成此操作: ',\n'.join([', '.join(items) for items in zip(a, b, c)]) 或者正如rafaelc所建议的: ',\n'.join(

我有三个Python列表

ListA
ListB
ListC
所有列表都有相同数量的元素

我想按以下形状打印它们:

a0, b0, c0,

a1, b1, c1,

.
.
.

an, bn, cn
因此,除了最后一行之外,元素之间和每行后面都有一个逗号。

解决方案: 您可以通过使用
zip
和两种不同的连接来完成此操作:

',\n'.join([', '.join(items) for items in zip(a, b, c)])
或者正如rafaelc所建议的:

',\n'.join(map(', '.join, zip(a, b, c)))
说明:
zip
zip
按位置对您提供的不同iTerable的元素进行分组

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

('a0', 'b0', 'c0'), ('a1', 'b1', 'c1'), ('a2', 'b2', 'c2'), ...
'Hello-World'
根据您的Python版本,它可能会以列表或生成器的形式返回,但两者都是可编辑的,所以这不应该是一个问题

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

[', '.join(item) for item in zip(a, b, c)]
因此它将应用于
,”。将
连接到
('a0','b0','c0')
,然后它将应用
,”。将
连接到
('a1','b1','c1')

', '.join(('a0', 'b0', 'c0')), ', '.join(('a1', 'b1', 'c1')), ', '.join(('a2', 'b2', 'c2')), ...
如果有其他人加入,我们将:

',\n'.join(   ', '.join(('a0', 'b0', 'c0')), ', '.join(('a1', 'b1', 'c1')), ', '.join(('a2', 'b2', 'c2')), ...   )
列表理解 列表理解是在第一个解决方案中使用的,而不是映射,应用“,”。连接到iterable的每个元素

[', '.join(item) for item in zip(a, b, c)]
相当于:

map(', '.join, zip(a, b, c))
除了列表理解返回一个列表,映射调用返回一个iterable,但是这没有任何区别,因为outter连接接受iterables,并且列表也是iterables

加入
join
使用调用它的字符串作为分隔符,将作为参数传递的iterable元素串接在一起

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

('a0', 'b0', 'c0'), ('a1', 'b1', 'c1'), ('a2', 'b2', 'c2'), ...
'Hello-World'
应用内部联接:

',\n'.join( [ 'a0, b0, c0', 'a1, b1, c1', 'a2, b2, c2', ... ] )
然后应用最外面的一个

'a0, b0, c0,\na1, b1, c1,\na2, b2, c2,\n...'
一些评论: 它们可能只是您在此处发布的问题简化的一部分:

  • 不要对变量使用PascalCase名称,请使用snake_大小写
  • 尽量避免使用定义变量类型的变量
解决方案: 您可以通过使用
zip
和两种不同的连接来完成此操作:

',\n'.join([', '.join(items) for items in zip(a, b, c)])
或者正如rafaelc所建议的:

',\n'.join(map(', '.join, zip(a, b, c)))
说明:
zip
zip
按位置对您提供的不同iTerable的元素进行分组

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

('a0', 'b0', 'c0'), ('a1', 'b1', 'c1'), ('a2', 'b2', 'c2'), ...
'Hello-World'
根据您的Python版本,它可能会以列表或生成器的形式返回,但两者都是可编辑的,所以这不应该是一个问题

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

[', '.join(item) for item in zip(a, b, c)]
因此它将应用于
,”。将
连接到
('a0','b0','c0')
,然后它将应用
,”。将
连接到
('a1','b1','c1')

', '.join(('a0', 'b0', 'c0')), ', '.join(('a1', 'b1', 'c1')), ', '.join(('a2', 'b2', 'c2')), ...
如果有其他人加入,我们将:

',\n'.join(   ', '.join(('a0', 'b0', 'c0')), ', '.join(('a1', 'b1', 'c1')), ', '.join(('a2', 'b2', 'c2')), ...   )
列表理解 列表理解是在第一个解决方案中使用的,而不是映射,应用“,”。连接到iterable的每个元素

[', '.join(item) for item in zip(a, b, c)]
相当于:

map(', '.join, zip(a, b, c))
除了列表理解返回一个列表,映射调用返回一个iterable,但是这没有任何区别,因为outter连接接受iterables,并且列表也是iterables

加入
join
使用调用它的字符串作为分隔符,将作为参数传递的iterable元素串接在一起

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

('a0', 'b0', 'c0'), ('a1', 'b1', 'c1'), ('a2', 'b2', 'c2'), ...
'Hello-World'
应用内部联接:

',\n'.join( [ 'a0, b0, c0', 'a1, b1, c1', 'a2, b2, c2', ... ] )
然后应用最外面的一个

'a0, b0, c0,\na1, b1, c1,\na2, b2, c2,\n...'
一些评论: 它们可能只是您在此处发布的问题简化的一部分:

  • 不要对变量使用PascalCase名称,请使用snake_大小写
  • 尽量避免使用定义变量类型的变量

如果所有元素都具有相同的长度,您只需在任意列表的
范围(len())
的for循环内的一次打印中设置它:

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


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

假设所有元素都具有相同的长度,您只需在任意列表的
范围(len())
的for循环内的一次打印中设置它:

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


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

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

资料来源:

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

output = ""

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

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

a0, b0, c0,
a1, b1, c1,
a2, b2, c2
a0, b0, c0,
a1, b1, c1,
a2, b2, c2

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

资料来源:

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

output = ""

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

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

a0, b0, c0,
a1, b1, c1,
a2, b2, c2
a0, b0, c0,
a1, b1, c1,
a2, b2, c2
输出

1, 4, 7,
2, 5, 8,
3, 6, 9
输出

1, 4, 7,
2, 5, 8,
3, 6, 9
最简单的:

listA =[1,2,3,4,5,6,7]
listB =[11,2,3,4,5,6,7]
listC =[111,2,3,4,5,6,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(listB[i])+ ','+ str(listC[i]))
    i += 1
listA=[1,2,3,4,5,6,7]
listB=[11,2,3,4,5,6,7]
listC=[111,2,3,4,5,6,7]
长度=长度(列表A)
i=0
#使用while循环进行迭代
而我<长度:
如果(i0):

listA =[1,2,3,4,5,6,7]
listB =[11,2,3,4,5,6,7]
listC =[111,2,3,4,5,6,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(listB[i])+ ','+ str(listC[i]))
    i += 1
listA=[1,2,3,4,5,6,7]
listB=[11,2,3,4,5,6,7]
listC=[111,2,3,4,5,6,7]
长度=长度(列表A)
i=0
#使用while循环进行迭代
而我<长度:

如果(除了最后一行之外,我在每一行中都添加了一个逗号,这对于自处理循环来说并不简单。是的,我在重读您的评论后注意到了这一点,您是对的。编辑版本现在运行良好,只需添加一个if语句。我试图避免使用条件处理边缘情况,但您是对的,您可以这样做也不是这样。谢谢你指出我的错误并首先帮助我解决它。否决票是你的吗?不,如果我对解决的错误投否决票,我会在它们解决后删除否决票,但在这种情况下,不是我。他在每一行中都添加了最后一个逗号,除了最后一个,这对自我来说并不简单-处理循环。是的,我在重新阅读您的评论后注意到了,您是对的。编辑版本现在运行良好,只需添加一个if语句。我尝试避免使用条件处理边缘情况,但您是对的,您也可以这样做。感谢您指出我的错误并首先帮助我解决它。是吗