首页 > 解决方案 > 从列表中放入带有for循环的函数的参数

问题描述

名单:

li=['check3_dwg_Polyline', 'check2_dwg_Polyline', 
    'check3_dwg_Polyline_feat_to_polyg',# this will not be needed to extracted
    'check2_dwg_Polyline_feat_to_polyg',# >> >>
    'check3_dwg_Polyline_feat_to_polyg_feat_to_line', 
    'check2_dwg_Polyline_feat_to_polyg_feat_to_line']

目的

将参数设置为:

erase('check3_dwg_Polyline','check3_dwg_Polyline_feat_to_polyg_feat_to_line','output_name')

有用的信息:尝试对列表进行排序但没有修复它。


erase目的是从列表中提取文件并通过循环将它们放入函数中。

像这样:

erase('check3_dwg_Polyline','check3_dwg_Polyline_feat_to_polyg_feat_to_line','output_name')

我试过了:

a=[li[i:i+3] for i in range(0, len(li), 3)]

for base, base_f, base_line in a:
    print(base, base_line, base + "_output") # when it is fixed the 
                                             # print will be replaced with 
                                              # 'erase' to form the function

它给出了:

check2_dwg_Polyline_feat_to_polyg  check2_dwg_Polyline_feat_to_polyg_feat_to_line  check2_dwg_Polyline_feat_to_polyg_output 
check3_dwg_Polyline  check3_dwg_Polyline_feat_to_polyg  check3_dwg_Polyline_output 

虽然它应该:

check3_dwg_Polyline   check3_dwg_Polyline_feat_to_polyg_feat_to_line  check3_dwg_Polyline_output

check2_dwg_Polyline   check2_dwg_Polyline_feat_to_polyg_feat_to_line  check2_dwg_Polyline_output

所以以后它可以像这样运行:

erase('check3_dwg_Polyline','check3_dwg_Polyline_feat_to_polyg_feat_to_line','output_name')

标签: pythonfor-loopdata-analysis

解决方案


如果要erase使用 的前 3 项调用该函数li,则应切掉列表的前 3 项并使用 调用该函数apply

def erase(a,b,c):
    #do something with a,b,c
    return

li=['check3_dwg_Polyline', 'check2_dwg_Polyline', 
'check3_dwg_Polyline_feat_to_polyg',
'check2_dwg_Polyline_feat_to_polyg',
'check3_dwg_Polyline_feat_to_polyg_feat_to_line', 
'check2_dwg_Polyline_feat_to_polyg_feat_to_line']

apply(erase,li[:3])

推荐阅读