Python 打印返回值可以是列表或整数
Python to print a returned value can be either a list or a int
我正在使用 pyVCF 读取 VCF 文件,返回的 sample['AD']
可以是像 [8, 14]
这样的 list
或像 [=16= 这样的 int
].
如果我使用 ','.join(map(str,sample['AD']))
,它会在 int
returns 处停止,因为 "TypeError: 'int' object is not iterable"。
如何编写它以在两种情况下打印它?
回复评论:
只是正常的代码。但是VCF文件有两种AD
.
import vcf
vcf_reader = vcf.Reader(filename='xxx.vcf.gz',compressed=True)
for record in vcf_reader.fetch(theChrid):
for sample in record.samples:
检查结果是列表实例还是整数
if instanceof(result,int):
#print as int
else:
#as list
您可以在将输入值初始化为 map()
时使用 if-else
案例 1:
>>> sample['AD'] = [8,14]
>>> ','.join(map(str, sample['AD'] if isinstance(sample['AD'], list) else list(str(sample['AD']))))
'8,14'
案例二:
>>> sample['AD'] = 5
>>> ','.join(map(str, sample['AD'] if isinstance(sample['AD'], list) else list(str(sample['AD']))))
'5'
我正在使用 pyVCF 读取 VCF 文件,返回的 sample['AD']
可以是像 [8, 14]
这样的 list
或像 [=16= 这样的 int
].
如果我使用 ','.join(map(str,sample['AD']))
,它会在 int
returns 处停止,因为 "TypeError: 'int' object is not iterable"。
如何编写它以在两种情况下打印它?
回复评论:
只是正常的代码。但是VCF文件有两种AD
.
import vcf
vcf_reader = vcf.Reader(filename='xxx.vcf.gz',compressed=True)
for record in vcf_reader.fetch(theChrid):
for sample in record.samples:
检查结果是列表实例还是整数
if instanceof(result,int):
#print as int
else:
#as list
您可以在将输入值初始化为 map()
if-else
案例 1:
>>> sample['AD'] = [8,14]
>>> ','.join(map(str, sample['AD'] if isinstance(sample['AD'], list) else list(str(sample['AD']))))
'8,14'
案例二:
>>> sample['AD'] = 5
>>> ','.join(map(str, sample['AD'] if isinstance(sample['AD'], list) else list(str(sample['AD']))))
'5'