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

Python: can't get a subset for variables with for loop

我是 Python 的新手,我想问一个关于 for 循环和变量子集的问题。事实证明,我正在处理来自官方民意调查的高维数据。然后,我有一个占五年的面板数据,其中不同年份的变量可以通过最后两位数来识别。例如:“codpeople_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 年所有变量的列表。然后,我需要一个 return 的函数。我试过这个:

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

它return只是第一个迭代字符,但我需要所有满足条件的变量。那么,如何获取满足条件的所有变量的列表?

此致

只需将 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']
def itercolumn(names)
  result = "":
  final = []
  for i in names:
    result = i[-2:]
    if result == "16":
      final.append(i)
  return final

将您的代码更改为此。