Python逗号分隔列表

时间:2017-07-18 12:27:52

标签: python list printing delimiter comma

我需要帮助,我尝试编写以逗号分隔的列表代码,但结果将以不同的方式打印。

这是我的示例代码:

a = ('name1', 'name2', 'name3')
b = ('url1', 'url2', 'url3')
results = (a, b)
print(results)

这将显示:

(('name1', 'name2', 'name3'), ('url1', 'url2', 'url3'))

但是,我想表明:

name1, url1, name2, url2, name3, url3

任何帮助表示赞赏

由于

4 个答案:

答案 0 :(得分:3)

您可以先使用zip(..)为每个名称和网址生成2元组,然后我们可以使用生成器或列表推导将这些组合在一起,例如:

print(', '.join(y for x in zip(a,b) for y in x))

这会产生:

>>> print(', '.join(y for x in zip(a,b) for y in x))
name1, url1, name2, url2, name3, url3

或更具说明性的风格:

from itertools import chain

print(', '.join(chain(*zip(a,b))))

修改

如果您想在不同的行上打印网址,可以使用:

for n,u in zip(a,b):
    print(n,u,sep=',')

或者如果你想先生成一个字符串:

print('\n'.join('{}, {}'.format(*t) for t in zip(a,b))

答案 1 :(得分:1)

这应该可以解决问题。

a = ('name1', 'name2', 'name3')
b = ('url1', 'url2', 'url3')

from itertools import chain

ab = tuple(chain.from_iterable(zip(a, b)))

lst = ', '.join(ab)

答案 2 :(得分:0)

有很多方法可以做到这一点,这是我首先想到的。

import operator
results = reduce(operator.add, zip(a, b))

这是另一个更“破碎”的可能是丑陋的方式,但是更容易看到发生了什么。

results = []
while True:
    try:
         results.append(a.pop(0))
         results.append(b.pop(0))
    except IndexError:
        break

答案 3 :(得分:0)

Willem's answer是解决原始问题的方法。

如果您想做的不仅仅是展示元素,您可能需要使用dict来获取数据:

>>> dict(zip(a,b))
{'name2': 'url2', 'name3': 'url3', 'name1': 'url1'}

如果订单很重要,您可以使用OrderedDict

>>> from collections import OrderedDict
>>> OrderedDict(zip(a,b))
OrderedDict([('name1', 'url1'), ('name2', 'url2'), ('name3', 'url3')])