python - 如何使用 Python 转换列表中的多个列表?

标签 python join nested-lists

<分区>

我想在一个列表中转换多个列表?我用循环来做,但每个子列表项之间没有逗号。

myList = [['a','b','c','d'],['a','b','c','d']]
myString = ''
for x in myList:
    myString += ",".join(x)
print myString

输出:

a,b,c,da,b,c,d

期望的输出:

a,b,c,d,a,b,c,d

最佳答案

这可以使用列表理解来完成,您可以将列表列表“扁平化”为单个列表,然后使用“join”方法使您的列表成为一个字符串。 ',' 部分表示用逗号分隔每个部分。

','.join([item for sub_list in myList for item in sub_list])

注意:请查看我下面的分析,了解在此处提出的其他解决方案中测试最快的解决方案

演示:

myList = [['a','b','c','d'],['a','b','c','d']]
result = ','.join([item for sub_list in myList for item in sub_list])

结果输出 -> a,b,c,d,a,b,c,d

然而,为了进一步将其分解成多个部分来解释它是如何工作的,我们可以看下面的例子:

# create a new list called my_new_list
my_new_list = []
# Next we want to iterate over the outer list
for sub_list in myList:
    # Now go over each item of the sublist
    for item in sub_list:
        # append it to our new list
        my_new_list.append(item)

所以在这一点上,输出 my_new_list 会产生:

['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd']

所以,现在我们要做的就是将它变成一个字符串。这就是 ','.join() 发挥作用的地方。我们只需调用这个电话:

myString = ','.join(my_new_list)

输出将给我们:

a,b,c,d,a,b,c,d

进一步分析

因此,进一步了解这一点,它确实激起了我的兴趣。我怀疑实际上其他解决方案可能更快。因此,为什么不测试一下呢!

我采用了提出的每个解决方案,并用更大的样本集对它们运行了一个计时器,看看会发生什么。运行代码以递增的顺序产生以下结果:

  1. map :3.8023074030061252
  2. 链:7.675725881999824
  3. 理解:8.73164687899407

因此,这里明显的赢家实际上是 map 实现。如果有人感兴趣,这里是用于计算结果时间的代码:

from timeit import Timer


def comprehension(l):
    return ','.join([i for sub_list in l for i in sub_list])


def chain(l):
    from itertools import chain
    return ','.join(chain.from_iterable(l))


def a_map(l):
    return ','.join(map(','.join, l))

myList = [[str(i) for i in range(10)] for j in range(10)]

print(Timer(lambda: comprehension(myList)).timeit())
print(Timer(lambda: chain(myList)).timeit())
print(Timer(lambda: a_map(myList)).timeit())

关于python - 如何使用 Python 转换列表中的多个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33223388/

相关文章:

python - 如何抓取与特定期刊/文章论文的每位教授相关的从属关系

python - 如何检查 3 个字符是否按连续的字母顺序排列

mysql - 如何从mysql中具有相同别名的两个或多个表中选择数据

python - 比较两个字段django过滤器

python - 如何在 Python 中不可变地捕获闭包变量的当前值?

join - Sequelize : how to join on foreign keys

mysql - 内连接产生的重复数据

python - 对多维列表的特定元素使用拆分

python - 如何有效地从 loadmat 函数生成的嵌套 numpy 数组中提取值?

python - 嵌套列表中的嵌套循环