Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建一个列表,其中每个列表[j]是另一个字符串列表中每个元素的字符j_Python_List_For Loop_Nested Loops - Fatal编程技术网

Python 创建一个列表,其中每个列表[j]是另一个字符串列表中每个元素的字符j

Python 创建一个列表,其中每个列表[j]是另一个字符串列表中每个元素的字符j,python,list,for-loop,nested-loops,Python,List,For Loop,Nested Loops,例如: list1 = ['abc','def','ghi','jk'`] output is : list2 = ['adgj','behk','cfi'] 基本上,list2中的每个元素i都应该是list1中每个元素的第i个字符 我知道,一般的格式应该是使用以下元素创建list2,直到每个元素结束 [list1[0][0] [list1[0][1] [list1[0][2] 然而,当我尝试创建for循环时,它会说我的索引不足,并且如果列表1中的最后一个元素的大小小于其余元素,那么我也

例如:

list1 = ['abc','def','ghi','jk'`] 
output is : list2 = ['adgj','behk','cfi']
基本上,
list2
中的每个元素
i
都应该是
list1
中每个元素的第i个字符

我知道,一般的格式应该是使用以下元素创建list2,直到每个元素结束

[list1[0][0]
[list1[0][1]
[list1[0][2]

然而,当我尝试创建for循环时,它会说我的索引不足,并且如果列表1中的最后一个元素的大小小于其余元素,那么我也很难让索引停止。我只是需要一些关于如何设置for循环的指导

for I in range(Len(list1)):
  list2[I]=list1[I][0]

我知道我需要第二个for循环来更改索引0,但在实现这一点时遇到困难。您可以执行以下操作:

list1 = ['abc','def','ghi','jk']

max_length = max(map(len, list1))

result = []
for i in range(max_length):
    element = []
    for s in list1:
        element.append(s[i] if i < len(s) else "")
    result.append(''.join(element))

print(result)
输出

['adgj', 'behk', 'cfi']

尽管如此,后者还是有点高级的解决方案。

您可以使用
itertools.zip\u
来实现这一点,如评论中所述:

list(map(''.join, zip_longest(*list1, fillvalue='')))
或手动:

result = [''] * max(map(len, list1))
for i in range(len(result)):
    for s in list1:
      if i  < len(s):  result[i] += s[i]
result=['']*max(映射(len,列表1))
对于范围内的i(len(result)):
对于列表1中的s:
如果i
请提供一个示例,您的预期输出是什么?您的示例正确吗?为什么
list2
e
两次;结果=列表(映射(“”.join,zip_longest(*List1,fillvalue=“”))您应该迭代最小长度的列表<代码>对于范围内的I(min(len(list1),len(list2)):。这将解决额外pythonicity的问题,
[''。在zip\u longest(*list1,fillvalue='')中为x加入(x)
list(map(''.join, zip_longest(*list1, fillvalue='')))
result = [''] * max(map(len, list1))
for i in range(len(result)):
    for s in list1:
      if i  < len(s):  result[i] += s[i]