我需要帮助,我尝试编写以逗号分隔的列表代码,但结果将以不同的方式打印。
这是我的示例代码:
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
任何帮助表示赞赏
由于
答案 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')])