Python逗号分隔列表

Posted

技术标签:

【中文标题】Python逗号分隔列表【英文标题】:Python Comma Separate List 【发布时间】:2017-07-18 12:27:51 【问题描述】:

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

这是我的示例代码:

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

任何帮助表示赞赏

谢谢

【问题讨论】:

print(', '.join(', '.format(*z) for z in zip(a, b))) 但请看一下教程之类的。这些是tuples btw,而不是lists。 你可以使用我的新 favroute 语法(但不要):a = iter(a); print(list((yield next(a)) or x for x in b)) @Chris_Rands ????这是怎么回事? @Ev.Kounis ***.com/questions/32139885/… 可能的欺骗:***.com/questions/7946798/… 【参考方案1】:

您可以先使用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))))

编辑

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

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

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

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

【讨论】:

快速提问,如何将输出更改为显示;名称1,网址名称2,网址名称3,网址 所以url每次都一样? 不,它将是列表中的下一个 url。我的代码是基本示例。我实际上是从网络上提取数据,但想先了解基础知识。我实际上会从 find_elements_by_xpath 收集 10 个 url,10 个名称 @AuthorityDomains: 给定b包含了你收集到的所有url,那么就没有问题了。无论是list,还是tuple,都不相关。 所以它会在第一行列出name1、url1,然后在下一行列出name2、url2,依此类推【参考方案2】:

这应该可以解决问题。

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

from itertools import chain

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

lst = ', '.join(ab)

【讨论】:

这也有效,但仍显示括号和引号,但谢谢【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于Python逗号分隔列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将逗号分隔的字符串转换为 Python 中的列表?

如何在 jinja python 模板中输出逗号分隔列表?

将一列csv提取成逗号分隔的列表python

将逗号分隔的字符串转换为Python中的列表

使用 Python 将多个字符串元素列表转换为单个元素以逗号分隔的列表

Python / Pandas合并并从逗号分隔的变量/列生成唯一值列表[重复]