Python 如何打印三行三列的列表,其中三列有逗号,没有括号
我有三个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(
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语句。我尝试避免使用条件处理边缘情况,但您是对的,您也可以这样做。感谢您指出我的错误并首先帮助我解决它。是吗