可以将分配作为 python 列表理解的一部分吗?

Can assignments be made as part of python list comprehension?

是否可以使用列表理解来代替下面的 for 循环?

shod_l = list() # Initialize a list for empty pd.DataFrames that will be used later for merging of api query results

for q in range(len(shod_list)): #shod_list is a list containing several strings
    q = pd.DataFrame()
    shod_l.append(q)

您可以像这样使用列表推导式(因为您在循环内的赋值无效):

shod_l = [pd.DataFrame() for _ in range(len(shod_list))]

您只需:

shod_l = [pd.DataFrame() for _ in shod_list]

或者如果使用变量 q:

shod_l = [pd.DataFrame() for q in shod_list]

或者如果您决定使用范围:

shod_l = [pd.DataFrame() for q in range(len(shod_list))]

要回答标题问题,是的,可以使用 assignment expressions。等效循环将是

shod_l = [q := pd.DataFrame() for _ in range(len(shod_list))]

但如其他答案中所述,绑定 q 没有意义,因此在这种特殊情况下,不需要赋值。