如何为现有列表(也是生成的)的每个元素生成新列表?

时间:2021-05-28 11:34:55

标签: python arrays list element generate

我有包含一些路径的列表:

['folder1/folder2/Module1', 'folder4/folder5/Module2', 'folder7/folder8/Module3', 'folder12/folder13/Module4', 'folder17/folder20/folder50/Module5' .. etc]< /p>

提取该列表的每个元素并创建新列表或其他位置来存储具有特定名称的路径的最佳方法是什么?

Mu 当前代码用于遍历列表中的每个元素并一个一个地存储它,但我无法为每个元素生成新列表,不确定是否可能:

for j in range(len(listOfPaths)):
  del pathList[:]
  path = listOfPaths[j]
  pathList.append(path)

所以澄清一下,最后我需要的是获得一个仅包含“folder1/folder2/Module1”的列表 list[Module1],以及仅包含 Module2 路径的第二个列表 [Module2],等等...

3 个答案:

答案 0 :(得分:1)

检查这个?

temp=['folder1/folder2/Module1', 'folder4/folder5/Module2', 'folder7/folder8/Module3', 'folder12/folder13/Module4', 'folder17/folder20/folder50/Module5']
# List initialization
Output = [] 
  
# Using Iteration to convert 
# element into list of list
for elem in temp:
    temp3=[]
    temp3.append(elem)
    Output.append(temp3)
  
# printing
print(Output)

输出:

[['folder1/folder2/Module1'], ['folder4/folder5/Module2'], ['folder7/folder8/Module3'], ['folder12/folder13/Module4'], ['folder17/folder20/folder50/Module5']]

答案 1 :(得分:1)

这里最好使用字典而不是列表。

#!/usr/bin/env python3
import os

paths = []

paths.append("folder1/subfolderA/Module1")
paths.append("folder2/subfolderB/Module1")
paths.append("folder3/subfolderC/Module1")

paths.append("folder4/subfolderD/Module2")
paths.append("folder5/subfolderE/Module2")

paths.append("folder6/subfolderF/Module50")



# create an empty dictionary
modulesDict = {}
# it will look like this:
#  "ModuleX" -> ["path1/to/ModuleX", "path2/to/ModuleX", ...]
#  "ModuleY" -> ["path3/to/ModuleY", "path4/to/ModuleY", ...]

for path in paths: # loop over original list of paths
    # take only the "ModuleX" part
    moduleName = os.path.basename(os.path.normpath(path))
    # check if its already in our dict or not
    if moduleName in modulesDict:
        # add the path to the list of paths for that module
        modulesDict.get(moduleName).append(path)
    else:
        # create an new list, with only one element (only the path)
        modulesDict[moduleName] = [path]


print(modulesDict)


输出:(稍微格式化)

{
'Module1':
    ['folder1/subfolderA/Module1', 'folder2/subfolderB/Module1', 'folder3/subfolderC/Module1'],
'Module2':
    ['folder4/subfolderD/Module2', 'folder5/subfolderE/Module2'],
'Module50':
    ['folder6/subfolderF/Module50']
}


答案 2 :(得分:0)

我想你可以试试这个:

input=["stra", "strb"]

output =list(map(lambda x: [x], input))

相关问题