Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在函数中返回多个值(Python)?_Python_Function - Fatal编程技术网

如何在函数中返回多个值(Python)?

如何在函数中返回多个值(Python)?,python,function,Python,Function,因此,我对编码和处理来自Kaggle的泰坦尼克号数据集还不熟悉。在数据框中,有标记为“年龄”和“性别”的列。我想创建一个新列,其中有4个值表示不同的内容: 0:16岁或以上男性 1:16岁或以上女性 2:15岁或以下男性 3:15岁或以下的女性 到目前为止,我已经得到了这个,但这只是把它分成3个值,而不是我要找的4个值 def person_detail(Person): Age, Sex = Person return 2 if Age < 16 else Sex de

因此,我对编码和处理来自Kaggle的泰坦尼克号数据集还不熟悉。在数据框中,有标记为“年龄”和“性别”的列。我想创建一个新列,其中有4个值表示不同的内容: 0:16岁或以上男性 1:16岁或以上女性 2:15岁或以下男性 3:15岁或以下的女性

到目前为止,我已经得到了这个,但这只是把它分成3个值,而不是我要找的4个值

def person_detail(Person):
    Age, Sex = Person
    return 2 if Age < 16 else Sex
def人员详细信息(人员):
年龄、性别=人
如果年龄小于16岁,则返回2,其他性别
然后,我将该函数应用于“年龄”和“性别”列,以获得一个新列。我知道你不可能有两个回报,但如果它能达到我想要达到的目标,它看起来会像下面这样

def person_detail(Person):
    Age, Sex = Person
    return 2 if Age < 16 and Sex == 0
    return 3 if Age < 16 and Sex == 1 else Sex
def人员详细信息(人员):
年龄、性别=人
如果年龄<16岁,性别==0,则返回2
如果年龄<16岁,性别==1,则返回3,否则返回性别

提前谢谢。在“性别”栏中,0代表男性,1代表女性。

只要使用
if…else
语句即可。我想你想要的是:

def person_detail(Person):
    Age, Sex = Person
    if Age<16:
        return 3 if Sex else 2
    else:
        return Sex
def人员详细信息(人员):
年龄、性别=人

if Age您可以使用多个if语句、if-else语句或字典:

d = {(0, 0): 0, (0, 1): 1, (1, 0): 2, (1, 1): 3}

def person_detail(Person):
    Age, Sex = Person
    return d[Age < 16, Sex]
d={(0,0):0,(0,1):1,(1,0):2,(1,1):3}
def人员详细信息(人员):
年龄、性别=人
返回d[年龄<16岁,性别]

在我看来,您应该使用@miindlek建议的“long”
if/else
,以明确函数的不同结果。此外,我还建议不仅
返回Sex
,如果Sex else 0则返回
1,再次明确函数返回的内容

但是,如果您希望使用非常短的
返回
行,也可以使用如下三元语句:

return Sex + 2 if Age < 16 else Sex
如果年龄小于16岁,则返回性别+2,否则返回性别
甚至更短(但不容易理解):

return(年龄<16岁)*2+性别

这可能会使代码更短,但可读性不强。我只是想在OP中引入一种方法,它可以用于类似的问题,并有更多可能的结果(当使用越来越多的if-then-else语句时,会变得一团糟)。这很好,但至少在它当前的形式下,很难理解。我建议将dict移到函数中,给它一个适当的名称,并明确第一部分是一个布尔值:
outcours={(False,1):0,…}
或者,嵌套三元表达式,如
return(3 if Sex else 2)if Age<16 else Sex
,但我认为“long”
if/else
实际上更具可读性。非常感谢,我想我有点糊涂了,但是你能解释一下“如果Sex-else-2返回3”吗?从本质上讲,这个代码是如何理解我想要16岁以下女性3个,16岁以下男性2个的?@NotBad4U-这回答了这个问题的标题,但不幸的是,这个标题似乎与实际问题无关,所以它不是重复的。这个问题基本上是“如何使用
elif
语句?”。
return (Age < 16) * 2 + Sex