草庐IT

Pythonic

全部标签

在列表中查找最大值及其索引的 Pythonic 方法?

如果我想要一个列表中的最大值,我可以写max(List),但是如果我还需要最大值的索引呢?我可以这样写:maximum=0fori,valueinenumerate(List):ifvalue>maximum:maximum=valueindex=i但这对我来说看起来很乏味。如果我写:List.index(max(List))然后它会迭代列表两次。有没有更好的办法? 最佳答案 我认为接受的答案很好,但你为什么不明确地做呢?我觉得更多人会理解你的代码,这与PEP8一致:max_value=max(my_list)max_index=m

coding-style - pythonic方式在没有索引变量的情况下做N次?

这个问题在这里已经有了答案:IsitpossibletoimplementaPythonforrangeloopwithoutaniteratorvariable?(15个回答)关闭3个月前。我有一些类似的代码:foriinrange(N):do_something()我想做N次。循环内的代码不依赖于i的值。是否可以在不创建无用索引变量的情况下完成这个简单的任务,或者以其他更优雅的方式?怎么样? 最佳答案 比在xrange(N)上循环稍快的方法是:importitertoolsfor_initertools.repeat(None,

coding-style - pythonic方式在没有索引变量的情况下做N次?

这个问题在这里已经有了答案:IsitpossibletoimplementaPythonforrangeloopwithoutaniteratorvariable?(15个回答)关闭3个月前。我有一些类似的代码:foriinrange(N):do_something()我想做N次。循环内的代码不依赖于i的值。是否可以在不创建无用索引变量的情况下完成这个简单的任务,或者以其他更优雅的方式?怎么样? 最佳答案 比在xrange(N)上循环稍快的方法是:importitertoolsfor_initertools.repeat(None,

list - Pythonic方法返回更大列表中每个第n个项目的列表

假设我们有一个从0到1000的数字列表。是否有一种pythonic/有效的方法来生成第一个和每个后续第10个项目的列表,即[0,10,20,30,...]?是的,我可以使用for循环来做到这一点,但我想知道是否有更简洁的方法来做到这一点,甚至可能在一行中? 最佳答案 >>>lst=list(range(165))>>>lst[0::10][0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160]请注意,这比循环和检查每个元素的模数快大约100倍:$python-mtimeit

list - Pythonic方法返回更大列表中每个第n个项目的列表

假设我们有一个从0到1000的数字列表。是否有一种pythonic/有效的方法来生成第一个和每个后续第10个项目的列表,即[0,10,20,30,...]?是的,我可以使用for循环来做到这一点,但我想知道是否有更简洁的方法来做到这一点,甚至可能在一行中? 最佳答案 >>>lst=list(range(165))>>>lst[0::10][0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160]请注意,这比循环和检查每个元素的模数快大约100倍:$python-mtimeit

datetime - 组合 datetime.date 和 datetime.time 对象的 Pythonic 方式

我有两个代表同一个事件实例的对象——一个是日期,另一个是这个事件的时间,我想创建一个日期时间对象。由于不能简单地添加日期和时间对象(以下调用失败):datetime.date(2011,01,01)+datetime.time(10,23) 最佳答案 它在pythondocs中.importdatetimedatetime.datetime.combine(datetime.date(2011,1,1),datetime.time(10,23))返回datetime.datetime(2011,1,1,10,23)

datetime - 组合 datetime.date 和 datetime.time 对象的 Pythonic 方式

我有两个代表同一个事件实例的对象——一个是日期,另一个是这个事件的时间,我想创建一个日期时间对象。由于不能简单地添加日期和时间对象(以下调用失败):datetime.date(2011,01,01)+datetime.time(10,23) 最佳答案 它在pythondocs中.importdatetimedatetime.datetime.combine(datetime.date(2011,1,1),datetime.time(10,23))返回datetime.datetime(2011,1,1,10,23)

避免 "if x: return x"语句的 Pythonic 方法

我有一个方法,它依次调用其他4个方法来检查特定条件,并在返回真值时立即返回(不检查以下几个)。defcheck_all_conditions():x=check_size()ifx:returnxx=check_color()ifx:returnxx=check_tone()ifx:returnxx=check_flavor()ifx:returnxreturnNone这似乎是很多行李代码。而不是每个2行if语句,我宁愿做这样的事情:xandreturnx但那是无效的Python。我在这里错过了一个简单、优雅的解决方案吗?顺便说一句,在这种情况下,这四种检查方法可能很昂贵,所以我不想多

避免 "if x: return x"语句的 Pythonic 方法

我有一个方法,它依次调用其他4个方法来检查特定条件,并在返回真值时立即返回(不检查以下几个)。defcheck_all_conditions():x=check_size()ifx:returnxx=check_color()ifx:returnxx=check_tone()ifx:returnxx=check_flavor()ifx:returnxreturnNone这似乎是很多行李代码。而不是每个2行if语句,我宁愿做这样的事情:xandreturnx但那是无效的Python。我在这里错过了一个简单、优雅的解决方案吗?顺便说一句,在这种情况下,这四种检查方法可能很昂贵,所以我不想多

结合for循环和if语句的Pythonic方式

我知道如何在单独的行上同时使用for循环和if语句,例如:>>>a=[2,3,4,5,6,7,8,9,0]...xyz=[0,12,4,6,242,7,9]...forxinxyz:...ifxina:...print(x)0,4,6,7,9而且我知道当语句很简单时,我可以使用列表推导来组合这些,例如:print([xforxinxyzifxina])但是我在任何地方都找不到一个很好的例子(可以复制和学习),它演示了在for循环和一些if语句的组合之后发生的一组复杂的命令(不仅仅是“打印x”)。我期望的东西看起来像:forxinxyzifxnotina:print(x...)这不是py