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
将您的代码更改为此。
我是 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
将您的代码更改为此。