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')])
我需要帮助,我正在尝试编写一个逗号分隔的列表,但要以不同的方式打印结果。
这是我的示例代码:
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')])