Python:帮助组织列中的输出

2024-06-16 13:38:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经把程序写下来了。它只是以二进制数字的形式随机列出寄生虫和宿主的“遗传密码”。我想要的只是帮助组织输出。我希望输出以列为单位-例如:

Host     Parasite
  1      [1,0,0,1]          
  2      [1,0,0,1]
  3      ......
  4      .......

在宿主旁边的另一列中列出寄生虫随机数

import random
host_genome_length = 10
assert host_genome_length >0
parasite_genome_length = 5
assert parasite_genome_length>0
host_initial_population=10
assert    host_initial_population >=1
parasite_initial_population=2
assert   parasite_initial_population >=0
parasite_initial_chance_1= 0.1
assert   0<= parasite_initial_chance_1 <=1
host_initial_chance_1=0.5
assert   0<= host_initial_chance_1 <=1

hosts=[]
for i  in range(host_initial_population):
    genome= []
    for j in range (host_genome_length):
        if random.random()< host_initial_chance_1:
            genome.append(1)
        else:
            genome.append(0)
    hosts.append(genome)
print "hosts:"
print  hosts

parasites=[]
for i  in range(parasite_initial_population):
    genome= []
    for j in range (parasite_genome_length):
        if random.random()< parasite_initial_chance_1:
            genome.append(1)
        else:
            genome.append(0)
    parasites.append(genome)

for i in range(host_initial_population-parasite_initial_population):
    parasites.append(None)
print "parasites:"
print parasites

Tags: inhostforgenomerangerandomassertlength
2条回答

您可以看看str.format函数。你知道吗

这是你可能想到的一些草图。你知道吗

print '{:50} {:50}'.format('Host', 'Parasites')

for i in range(max(len(parasites), len(hosts))):
    print '{:50} {:50}'.format(str(i+1) + str(hosts[i]), parasites[i])

以下是代码中该代码段生成的输出:

Host                                               Parasites                                         
1[1, 0, 0, 1, 0, 1, 1, 1, 1, 1]                    [0, 0, 0, 0, 0]                                   
2[1, 0, 0, 1, 1, 1, 0, 0, 1, 0]                    [0, 0, 0, 0, 0]                                   
3[0, 1, 1, 1, 1, 0, 1, 0, 0, 0]                    None                                              
4[1, 0, 0, 0, 1, 0, 0, 0, 1, 1]                    None                                              
5[0, 1, 0, 1, 0, 1, 0, 0, 1, 0]                    None                                              
6[1, 1, 1, 1, 0, 1, 1, 0, 1, 1]                    None                                              
7[0, 1, 1, 0, 0, 0, 0, 1, 1, 1]                    None                                              
8[0, 0, 1, 0, 0, 1, 0, 0, 1, 1]                    None                                              
9[0, 0, 1, 0, 1, 0, 0, 0, 1, 0]                    None                                              
10[1, 0, 0, 1, 1, 1, 1, 1, 0, 1]                   None          

你可能想把它美化一点。你知道吗

您可以使用Python的字符串格式化工具来实现这一点。每个括号的:40部分指定字段的宽度应为40个字符:

print "{:40} {:40}".format("Host", "Parasite")
for host, parasite in zip(hosts, parasites):
    print "{:40} {:40}".format(host, parasite)

输出:

Host                                     Parasite                                
[0, 1, 1, 1, 0, 1, 1, 0, 0, 1]           [0, 0, 0, 0, 0]                         
[1, 1, 1, 1, 0, 0, 0, 0, 0, 1]           [0, 0, 0, 0, 0]                         
[1, 0, 1, 0, 1, 0, 1, 0, 1, 1]           None                                    
[0, 1, 0, 0, 0, 1, 1, 1, 0, 1]           None                                    
[0, 0, 0, 0, 0, 0, 1, 0, 1, 1]           None                                    
[1, 1, 1, 1, 0, 1, 1, 0, 0, 1]           None                                    
[1, 1, 1, 0, 1, 0, 1, 1, 1, 0]           None                                    
[1, 0, 0, 1, 1, 1, 0, 0, 0, 1]           None                                    
[0, 0, 1, 1, 0, 1, 0, 0, 1, 1]           None                                    
[1, 1, 1, 0, 1, 0, 0, 1, 0, 1]           None 

相关问题 更多 >