将数组中每个字符串的第n个字符添加到另一个数组的第n个列表中

时间:2017-12-02 21:21:45

标签: python python-3.x list

对此有一些严重的麻烦,即使这看起来非常基本。

我有两个清单;一个是二维的,其中有四个总列表,所有这些都包含四个字符串格式的字符。另一个也是二维的,有四个总列表,但列表是空的。

list1 = [['abcd'], ['abcd'], ['abcd'], ['abcd']]
list2 = [[], [], [], []]

所以,我试图做的是遍历list1的列表,并将每个列表的第n个字符添加到list2中的第n个列表。

之后应该的样子:(例如)

list1 = [['abcd'], ['abcd'], ['abcd'], ['abcd']]
list2 = [['aaaa'], ['bbbb'], ['cccc'], ['dddd']]

我尝试过:

i = 0
n = 0
while n < 4:
    for list in list1:
        list2[n] += list[i][n] # n = nth character
    n += 1

首先,我不得不承认我不知道[i]在这里做了什么,或者为什么它甚至在第一时间起作用;如果我用[0]替换[i],它将停止工作并返回索引错误。

输出的内容:

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

我应该如何更改代码以获取上述格式的字符串?

4 个答案:

答案 0 :(得分:1)

您可以使用list2上的str.join()功能获取所需内容:

list1 = [['abcd'], ['abcd'], ['abcd'], ['abcd']]
list2 = [[], [], [], []]

i = 0
n = 0
while n < 4:
    for sub_list in list1:
        list2[n] += sub_list[i][n] # n = nth character
    n += 1

list2 = [[''.join(listx)] for listx in list2]

答案 1 :(得分:0)

你可以试试这个:

list1 = [['abcd'], ['abcd'], ['abcd'], ['abcd']]
list2 = [[], [], [], []]
final_list = [[a[i]*4] for i, [[a], b] in enumerate(zip(list1, list2))]

输出:

[['aaaa'], ['bbbb'], ['cccc'], ['dddd']]

答案 2 :(得分:0)

您的代码存在的问题是list2[n] +=会在list2[n]列表中添加一个元素。相反,您想要创建一个字符串。请注意,您最初没有要追加的字符串。

由于您的目的是重复添加相同的字符,因此您不必为此设计循环。您可以使用*运算符。

for i, list in enumerate(list1):
    list2[i].append(list[0][i] * 4)

注意:如果您想用结果覆盖list2,请查看其他一些答案。这个答案会使原来的list2就地变异。

答案 3 :(得分:0)

我对您的代码做了一些小改动:

list1 = [['abcd'], ['abcd'], ['abcd'], ['abcd']]
list2 = [[], [], [], []]

i = 0
n = 0
while n < 4:
    for l in list1:
        string = "".join(l[i][n] * len(l[0])) # Changed line
    list2[n] = [string] # Placed assignment out of 'for' loop
    n += 1

print(list2)

输出结果为:

[['aaaa'], ['bbbb'], ['cccc'], ['dddd']]