小编Jos*_*erg的帖子

使用Python将列表写入文件

这是将列表写入文件的最简洁方法,因为writelines()不插入换行符吗?

file.writelines(["%s\n" % item  for item in list])
Run Code Online (Sandbox Code Playgroud)

似乎有一种标准方式......

python file-io newline file list

601
推荐指数
16
解决办法
142万
查看次数

集合操作中对象的行为

我正在尝试创建一个在set操作中正常运行的自定义对象.

我一般都有它的工作,但我想确保我完全理解其含义.特别是,当对象中存在未包含在等于/哈希方法中的其他数据时,我对此行为感兴趣.似乎在'intersection'操作中,它返回正在进行比较的对象集,其中'union'操作返回正在比较的对象集.

为了显示:

class MyObject:
    def __init__(self,value,meta):
        self.value = value
        self.meta = meta
    def __eq__(self,other):
        return self.value == other.value
    def __hash__(self):
        return hash(self.value)

a = MyObject('1','left')
b = MyObject('1','right')
c = MyObject('2','left')
d = MyObject('2','right')
e = MyObject('3','left')
print a == b # True
print a == c # False

for i in set([a,c,e]).intersection(set([b,d])):
    print "%s %s" % (i.value,i.meta)
#returns:
#1 right
#2 right

 for i in set([a,c,e]).union(set([b,d])):
    print "%s %s" % (i.value,i.meta)
#returns:
#1 left
#3 left
#2 left …
Run Code Online (Sandbox Code Playgroud)

python object set

10
推荐指数
1
解决办法
5216
查看次数

如何腌制伐木工人?

处理一个项目,要求我能够在任何时候挑选容器对象,因为我们期望它在外部条件下经常失败,并且能够完全从我们中断的地方开始.

我正在广泛使用python日志库,我的所有类都开始设置一个记录器,如:

class foo:
   def __init__(self):
       self.logger = logging.getLogger("package.foo")
Run Code Online (Sandbox Code Playgroud)

由于我正在挑选一个容器类,它里面有几层类,每个类都有自己的记录器实例.

现在,出于某种原因,这些记录器正在破坏Pickle.我收到以下错误,如果我从所有类中删除self.logger,它就会消失:

Can't pickle 'lock' object: <thread.lock object at ... >
Run Code Online (Sandbox Code Playgroud)

所以我的问题是是否有某种方法可以从所有记录器中删除锁定对象,而不必通过我的整个对象树删除记录器,我将不得不在unpickle上重新创建.

python logging pickle

7
推荐指数
4
解决办法
9898
查看次数

python:生成器对象上的属性

是否可以在生成器对象上创建属性?

这是一个非常简单的例子:

def filter(x):
    for line in myContent:
        if line == x:
            yield x
Run Code Online (Sandbox Code Playgroud)

现在说我有很多这些过滤器生成器对象浮动...也许其中一些是匿名的...我想稍后再回来询问他们正在过滤的内容.有没有办法我可以a)询问生成器对象的x值或b)设置一个值为x的属性,我以后可以询问?

谢谢

python

6
推荐指数
2
解决办法
7244
查看次数

python:我可以扩展range()方法的上限吗?

range()函数的上限是什么,我该如何扩展它,或者最好的方法是什么:

for i in range(1,600851475143):
Run Code Online (Sandbox Code Playgroud)

python

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

标签 统计

python ×5

file ×1

file-io ×1

list ×1

logging ×1

newline ×1

object ×1

pickle ×1

set ×1