Python 逗号分隔列表

Python Comma Separate List

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

这是我的示例代码:

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

感谢任何帮助

谢谢

您可以先使用 zip(..) 为每个名称和 url 生成二元组,然后我们可以使用生成器或列表理解将它们连接在一起,例如:

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))))

编辑:

如果你想在单独的行中打印 url,你可以使用:

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

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

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

这应该可以解决问题。

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

from itertools import chain

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

lst = ', '.join(ab)

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

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

这是另一种 'broken down' 可能比较丑陋的方法,但是更容易看出发生了什么。

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

是解决您最初问题的方法。

如果您想要做的不仅仅是显示元素,您可能想为您的数据使用 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')])