我正在尝试在Python中编写一个函数,我给它一个列表l = [[2,3],[5,6],[4,8]]
,其中包含其他列表。我应该打印一行中每个列表中的第一个项目,其间有三个空格,另一行中每个列表中的第二个项目,中间还有三个空格。我已经制作了以下代码 - 但它似乎在一行上打印所有内容,而且我不确定我做错了什么。
l = [[2,3],[5,6],[4,8]]
for item in l:
print(item[0], end = ' ')
for obj in l:
print(obj[1], end = ' ')
答案 0 :(得分:0)
这样做:
for column in range(2):
print(" ".join([str(row[column]) for row in l]))
>>> l = [[2,3],[5,6],[4,8]]
>>> for column in range(2):
... print(" ".join([str(row[column]) for row in l]))
...
2 5 4
3 6 8
答案 1 :(得分:0)
你已经让它只是在两个循环之外添加一个换行符,你的好处就是:
perl -ne 'print if (/.*:(\d+)\)$/ and $1>1000)' your_file
但是,如果您只是希望它立即出现在下一行,
l = [[2,3],[5,6],[4,8]]
for item in l:
print(item[0], end = ' ')
print('\n') #take note this needs to be outside both loops
for obj in l:
print(obj[1], end = ' ')
答案 2 :(得分:0)
由于它是一个整数,要与字符串连接,请使用map!
>>> " ".join(str(item[0]) for item in l)
'2 5 4'
>>> " ".join(str(item[1]) for item in l)
'3 6 8'
或使用zip!
zip - 以简单的方式放置它,它将子列表中相同索引的所有元素分组到一个列表中。
此函数返回元组列表,其中包含第i个元组 来自每个参数序列或迭代的第i个元素。该 返回的列表的长度被截断为最短的长度 论证序列。当有多个参数都是 相同的长度,zip()类似于map(),其初始参数为 没有。使用单个序列参数,它返回一个1元组的列表。 没有参数,它返回一个空列表。
保证了迭代的从左到右的评估顺序。 这使得将数据序列聚类成成语成为可能 使用zip(* [iter(s)] * n)的n长度组。
>>> l
[[2, 3], [5, 6], [4, 8]]
>>> zip(*l)
[(2, 5, 4), (3, 6, 8)]
>>> for each in zip(*l):
... " ".join(map(str,each))
...
'2 5 4'
'3 6 8'
答案 3 :(得分:0)
你可以试试这个:
> Traceback (most recent call last):
File "train.py", line 163, in <module>
tf.app.run()
File "C:\Program Files\Python36\lib\site-packages\tensorflow\python\platform\a
pp.py", line 48, in run
_sys.exit(main(_sys.argv[:1] + flags_passthrough))
File "train.py", line 91, in main
FLAGS.pipeline_config_path)
File "C:\Libraries\models-master\research\object_detection\utils\config_util.p
y", line 43, in get_configs_from_pipeline_file
text_format.Merge(proto_str, pipeline_config)
File "C:\Program Files\Python36\lib\site-packages\google\protobuf\text_format.
py", line 533, in Merge
descriptor_pool=descriptor_pool)
File "C:\Program Files\Python36\lib\site-packages\google\protobuf\text_format.
py", line 587, in MergeLines
return parser.MergeLines(lines, message)
File "C:\Program Files\Python36\lib\site-packages\google\protobuf\text_format.
py", line 620, in MergeLines
self._ParseOrMerge(lines, message)
File "C:\Program Files\Python36\lib\site-packages\google\protobuf\text_format.
py", line 635, in _ParseOrMerge
self._MergeField(tokenizer, message)
File "C:\Program Files\Python36\lib\site-packages\google\protobuf\text_format.
py", line 703, in _MergeField
(message_descriptor.full_name, name))
google.protobuf.text_format.ParseError: 195:3 : Message type "object_detection.p
rotos.TrainEvalPipelineConfig" has no field named "shuffle".
输出:
l = [[2,3],[5,6],[4,8]]
new_l = ["{} {} {}".format(*[b[i] for b in l]) for i in range(len(l[0]))]
for i in new_l:
print(i)
答案 4 :(得分:0)
您需要在循环之间添加print()
,因为您修改了默认的&#34; \ n&#34;作为印刷品的最终字符。
实现这一目标的另一种方法是:
>>> print(*a[0], sep = " ")
>>> print(*b[1], sep = " ")
答案 5 :(得分:0)
只需在两者之间加上打印声明!
l=[[2,3],[4,5],[6,7]]
for item in l:
print(item[0], end = ' ')
print()
for obj in l:
print(obj[1], end = ' ')
答案 6 :(得分:0)
>>> ''.join([str(l[i][0])+str(" ") if i!=len(l)-1 else str(l[i][0]) for i in range(len(l))])
'2 5 4'
>>> ''.join([str(l[i][1])+str(" ") if i!=len(l)-1 else str(l[i][1]) for i in range(len(l))])
'3 6 8'