GVKun编程网logo

如何在Python中使用Lambda进行排序(lambda python排序)

13

本文的目的是介绍如何在Python中使用Lambda进行排序的详细情况,特别关注lambdapython排序的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解如何在Py

本文的目的是介绍如何在Python中使用Lambda进行排序的详细情况,特别关注lambda python排序的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解如何在Python中使用Lambda进行排序的机会,同时也不会遗漏关于C# 中使用 Linq 和 Lambda 表达式对 List 进行排序、Lambda函数可以在Python中递归调用吗?、Python lambda , 使用lambda可以做到把X,Y的值交换吗?、python – 在Pandas中使用Apply使用多个if语句的Lambda函数的知识。

本文目录一览:

如何在Python中使用Lambda进行排序(lambda python排序)

如何在Python中使用Lambda进行排序(lambda python排序)

在Python中,我试图按日期与lambda排序。我无法理解我的错误消息。消息是:

<lambda>() takes exactly 1 argument (2 given)

我的电话是

a = sorted(a, lambda x: x.modified, reverse=True)

答案1

小编典典

采用

a = sorted(a, key=lambda x: x.modified, reverse=True)#             ^^^^

在Python 2.x上,该sorted函数按以下顺序使用其参数:

sorted(iterable, cmp=None, key=None, reverse=False)

因此,如果没有key=,您传入的函数将被视为带有cmp2个参数的函数。

C# 中使用 Linq 和 Lambda 表达式对 List<T> 进行排序

C# 中使用 Linq 和 Lambda 表达式对 List 进行排序

C# 中 List<T> 排序的两种方法

 

List<Student> stu = (List<Student>)Session["StudentList"];

 

Linq 表达式:
// 按学号降序
List<Student> stuList = (from s instu orderby s.stuNOdescending select s).ToList<Student>();

// 按学号升序
List<Student> stuList = (from s instu orderby s.stuNO  select s).ToList<Student>();


使用 Lambda 表达式排序: // 按学号降序
单字段:List<Student> stuList= stu.OrderByDescending(s=> s.orderid).ToList<Student>();
多字段:List<Student> stuList= stu.OrderByDescending(s=> new{s.stuNO,s.stuName}).ToList<Student>();

// 按学号升序
单字段:List<Student> stuList= stu.OrderBy(s=> s.stuNO).ToList<Student>();
多字段:List<Student> stuList= stu.OrderBy(s=> new{s.stuNO,s.stuName}).ToList<Student>();


多字段主次顺序排序情况,先按 no 排序,再按 name 排序
List<Student> stuList= stu.OrderBy(s=> s.stuNO).ThenBy(s=> s.stuName).ToList<Student>();

List<Student> stuList= stu.OrderBy(s=> new{ s.stuNO }).ThenBy(s=> new{s.stuName}).ToList<Student>();

Lambda函数可以在Python中递归调用吗?

Lambda函数可以在Python中递归调用吗?

常规函数可以在其定义中包含对自身的调用,没问题。我无法弄清楚如何使用lambda函数,原因很简单,因为lambda函数没有可引用的名称。有办法吗?怎么样?

答案1

小编典典

我能想到的唯一方法就是为函数命名:

fact = lambda x: 1 if x == 0 else x * fact(x-1)

或者,对于早期版本的python:

fact = lambda x: x == 0 and 1 or x * fact(x-1)

更新 :使用其他答案中的想法,我能够将阶乘函数嵌入单个未命名的lambda中:

>>> map(lambda n: (lambda f, *a: f(f, *a))(lambda rec, n: 1 if n == 0 else n*rec(rec, n-1), n), range(10))[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]

因此有可能,但并非真正推荐!

Python lambda , 使用lambda可以做到把X,Y的值交换吗?

Python lambda , 使用lambda可以做到把X,Y的值交换吗?

g = lambda x,y: y,x=x,y
大概意思就是这个的,想把x,y的值对换,但是上面的语法是错误的, lambda中好像不能有赋值语句??

python – 在Pandas中使用Apply使用多个if语句的Lambda函数

python – 在Pandas中使用Apply使用多个if语句的Lambda函数

我试图根据像这样的数据框中的人的大小来推断分类:

Size
1     80000
2     8000000
3     8000000000
...

我希望它看起来像这样:

Size        Classification
1     80000       <1m
2     8000000     1-10m
3     8000000000  >1bi
...

我理解理想的过程是应用这样的lambda函数:

df['Classification']=df['Size'].apply(lambda x: "<1m" if x<1000000 else "1-10m" if 1000000<x<10000000 else ...)

我检查了几个关于lambda函数中的多个ifs的帖子,here is an example link,但是这个synthax在多个ifs语句中由于某种原因不适合我,但是它在单个if条件下工作.

所以我尝试了这个“非常优雅”的解决方案:

df['Classification']=df['Size'].apply(lambda x: "<1m" if x<1000000 else pass)
df['Classification']=df['Size'].apply(lambda x: "1-10m" if 1000000 < x < 10000000 else pass)
df['Classification']=df['Size'].apply(lambda x: "10-50m" if 10000000 < x < 50000000 else pass)
df['Classification']=df['Size'].apply(lambda x: "50-100m" if 50000000 < x < 100000000 else pass)
df['Classification']=df['Size'].apply(lambda x: "100-500m" if 100000000 < x < 500000000 else pass)
df['Classification']=df['Size'].apply(lambda x: "500m-1bi" if 500000000 < x < 1000000000 else pass)
df['Classification']=df['Size'].apply(lambda x: ">1bi" if 1000000000 < x else pass)

可以看出“pass”似乎也不适用于lambda函数:

df['Classification']=df['Size'].apply(lambda x: "<1m" if x<1000000 else pass)
SyntaxError: invalid Syntax

关于Pandas中apply方法中lambda函数内多个if语句的正确synthax的任何建议?多线或单线解决方案对我有用.

解决方法

这是一个可以构建的小例子:

基本上,lambda x:x ..是函数的短单行.真正需要的是一个你可以轻松重建的功能.

import pandas as pd

# Recreate the dataframe
data = dict(Size=[80000,8000000,800000000])
df = pd.DataFrame(data)

# Create a function that returns desired values
# You only need to check upper bound as the next elif-statement will catch the value
def func(x):
    if x < 1e6:
        return "<1m"
    elif x < 1e7:
        return "1-10m"
    elif x < 5e7:
        return "10-50m"
    else:
        return 'N/A'
    # Add elif statements....

df['Classification'] = df['Size'].apply(func)

print(df)

返回:

Size Classification
0      80000            <1m
1    8000000          1-10m
2  800000000            N/A

我们今天的关于如何在Python中使用Lambda进行排序lambda python排序的分享就到这里,谢谢您的阅读,如果想了解更多关于C# 中使用 Linq 和 Lambda 表达式对 List 进行排序、Lambda函数可以在Python中递归调用吗?、Python lambda , 使用lambda可以做到把X,Y的值交换吗?、python – 在Pandas中使用Apply使用多个if语句的Lambda函数的相关信息,可以在本站进行搜索。

本文标签: