我有一些格式化问题,我希望你能提供帮助。基本上,我的程序给了我一个我要在每行打印的元组列表。这部分很简单,但为了便于阅读,我想在print语句中标记元组中的每个元素,如下所示:
[(n=0, a=175, t=94, g=292, c=39),
(n=0, a=90, t=33, g=166, c=248),
(n=0, a=121, t=159, g=155, c=165)]
到目前为止,以下是我的代码的相关部分。
my_results = zip(results_n, results_a, results_t, results_c, results_g)
#my_results returns a list of tuples
from pprint import pprint
#pprint(my_results, depth=5)
#returns [(0, 175, 94, 292, 39),
#(0, 90, 33, 166, 248),
#(0, 121, 159, 155, 165)]
toople = (0, 175, 94, 292, 39)
(n, a, t, g, c) = toople
#maybe unpacking the tuple will help in some way?
正如你所看到的,我唯一无法弄清楚如何做的部分是使用额外的“n =”,“a =”,...位打印我的元组。我怎么能这样做?
答案 0 :(得分:4)
您可以使用字符串格式。 *
解包result
中的每个元素,并将其作为单独的参数发送给format()
,这需要每个项的参数而不是包含所有参数的tuple
。
for result in my_results:
print('n={}, a={}, t={}, g={}, c={}'.format(*result))
答案 1 :(得分:1)
实现它的功能性方法:
# data for testing
combos = [(0, 175, 94, 292, 39),
(0, 90, 33, 166, 248),
(0, 121, 159,155, 165)]
results_n, results_a, results_t, results_c, results_g = zip(*combos)
labels = 'n={}', 'a={}', 't={}', 'g={}', 'c={}'
my_results = '\n'.join((', '.join(f.format(v) for f, v in zip(labels, row))
for row in zip(results_n, results_a, results_t, results_c, results_g)))
print(my_results)
输出:
n=0, a=175, t=94, g=292, c=39
n=0, a=90, t=33, g=166, c=248
n=0, a=121, t=159, g=155, c=165