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'