Python:无法使用 for 循环获取变量的子集



我对Python有点陌生,我想问一个关于for循环和变量子集的问题。事实证明,我正在处理来自官方民意调查的高维数据。然后,我有一个占五年的面板数据,其中不同年份的变量可以通过最后两位数字来识别。例如:" codepeople_16 "属于2016年。为了处理不同时间的观察结果,我需要得到一个占一年的所有变量的列表:比如,2016年的变量。

然后,我有一个数据框架中所有变量的列表。它看起来像这样:

names = (a200_16, a201_16, a202_16..., a200_17, a201_17, a202_17..., a200_18...)

那么我定义了一个函数如下:

def itercolumn(names):
result = ""
final = []
for i in names:
result = i[-2:]
if result == "16":
print(i)

它工作并打印2016年以来的所有变量。但是,我需要一个2016年所有变量的列表。然后,我需要一个函数来返回。我试过了:

ddef itercolumn(names):
result = ""
final = []
for i in names:
result = i[-2:]
if result == "16":
final += i
return final

它只返回第一个迭代字符,但我需要满足条件的所有变量。那么,我该怎么做才能得到满足条件的所有变量的列表呢?

def itercolumn(names)
result = "":
final = []
for i in names:
result = i[-2:]
if result == "16":
final.append(i)
return final

把你的代码改成这样

return替换为yield

def itercolumn(names):
for i in names:
result = i[-2:]
if result == "16":
yield i
print(list(itercolumn(names)))

def itercolumn(names):
final = []
for i in names:
result = i[-2:]
if result == "16":
final.append(i)
return final
print(itercolumn(names))

或者可以使用列表推导式

result = [name for name in names if name[-2:] == '16']

最新更新