相关疑难解决方法(0)

列表理解与lambda +过滤器

我碰巧发现自己有一个基本的过滤需求:我有一个列表,我必须通过项目的属性过滤它.

我的代码看起来像这样:

my_list = [x for x in my_list if x.attribute == value]
Run Code Online (Sandbox Code Playgroud)

但后来我想,这样写它会不会更好?

my_list = filter(lambda x: x.attribute == value, my_list)
Run Code Online (Sandbox Code Playgroud)

它更具可读性,如果需要性能,可以取出lambda来获得一些东西.

问题是:使用第二种方式有什么警告吗?任何性能差异?我是否完全错过了Pythonic Way™并且应该以另一种方式(例如使用itemgetter而不是lambda)来完成它?

python lambda functional-programming list filter

793
推荐指数
12
解决办法
65万
查看次数

生成器理解究竟是如何工作的?

生成器理解有什么作用?它是如何工作的?我找不到关于它的教程.

python

84
推荐指数
4
解决办法
5万
查看次数

在Python中使用countif的好方法是什么?

我想要计算迭代中有多少成员符合给定条件.我想以一种清晰简单的方式来做,最好是相当合理的.

我目前最好的想法是:

sum(meets_condition(x) for x in my_list)
Run Code Online (Sandbox Code Playgroud)

len([x for x in my_list if meets_condition(x)])
Run Code Online (Sandbox Code Playgroud)

第一个基于迭代器的大概列表更快.它与您用于测试任何和所有的形式相同.但是它取决于int(True)== 1的事实,这有点难看.

第二个似乎更容易给我看,但它与任何和所有形式都不同.

有没有人有更好的建议?我遗失的地方有图书馆功能吗?

python

39
推荐指数
2
解决办法
5万
查看次数

计算列表中满足特定条件的值

我有以下清单,

mylist = ['0.976850566018849',
 '1.01711066941038',
 '0.95545901267938',
 '1.13665822176679',
 '1.21770587184811',
 '1.12567451365206',
 '1.18041077035567',
 '1.13799827821001',
 '1.1624485106005',
 '1.37823533969271',
 '1.39598077584722',
 '1.23844320976322',
 '1.57397155911713',
 '1.40605782943842',
 '1.36037525085048',
 '1.185',
 '1.22795283469963',
 '1.17192311574904',
 '1.04121940463022',
 '1.0133517787145',
 '0.986161470813006',
 '1.09820439504488',
 '1.06640283661947',
 '1.05764772395448',
 '1.02678616758973',
 '1.01876057166248',
 '1.09019498604372',
 '1.1665479238629',
 '1.07170094763279',
 '1.1326945725342',
 '1.18199297460235',
 '1.20353001964446',
 '1.00973941850665',
 '1.0662943967844',
 '1.04876624296406',
 '1.12447065457189',
 '0.954629674212134',
 '1.02961694279098']
Run Code Online (Sandbox Code Playgroud)

我想要做的是计算该列表中> = 1.3的值.返回5,这是:

      '1.57397155911713' 
      '1.40605782943842'
      '1.36037525085048'
      '1.39598077584722' 
      '1.37823533969271'
Run Code Online (Sandbox Code Playgroud)

在Python中有一种紧凑的方式吗?

python

11
推荐指数
2
解决办法
2万
查看次数

Pythonic计算字符串列表中出现次数的方法

从目标字符串中的列表中查找字符串出现次数的最佳方法是什么?具体来说,我有一个清单:

string_list = [
    "foo",
    "bar",
    "baz"
]

target_string = "foo bar baz bar"

# Trying to write this function!
count = occurrence_counter(target_string) # should return 4
Run Code Online (Sandbox Code Playgroud)

我想优化以最小化速度和内存使用,如果这有所不同.在大小方面,我预计string_list最终可能包含数百个子串.

python algorithm

5
推荐指数
2
解决办法
1600
查看次数

计算与变量不同的列表/元组元素?

我有列表或/和元组:

MyVar = [0,0,0,0,1,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)

我想要计算与此不同的元素0.

怎么做?

python list count elements

3
推荐指数
1
解决办法
609
查看次数

Python-获取列表中的项目数不等于某物

如何获得此列表中非204的项目数?

data = [204, 204, 204, 500, 204, 204, 500, 500, 204, 404]

number_of_not_204 = any(x != 204 for x in data)

# returns True
print number_of_not_204

# looking to get the number 4 (500, 500, 500, and 404 are not 204)
Run Code Online (Sandbox Code Playgroud)

python

-2
推荐指数
1
解决办法
71
查看次数