我对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']