我有一个大字符串,我用换行符分割.如何删除所有空行(仅限空格)?
伪代码:
for stuff in largestring:
remove stuff that is blank
Run Code Online (Sandbox Code Playgroud) 我通读了有关插槽使用的主要答案,它让我了解了如何以及在何处使用__slots__.
现在,我将代码从 Python 2 移植到 Python 3,类似于以下内容:
class B(object):
__slots__ = ('_fields')
_fields = set()
Run Code Online (Sandbox Code Playgroud)
但这会在 Python 2 上正常工作时给出错误 Python 3:
ValueError: '_fields' in __slots__ conflicts with class variable.
我将代码更改为
class B(object):
__slots__ = ('_fields')
def __init__(self):
_fields = set()
Run Code Online (Sandbox Code Playgroud)
它工作正常。我的疑问是,它甚至是正确的更改吗?
正如我从原始代码中得到的,我猜它是说不要__dict__用于节省内存或更快的访问或任何原因,但同时也试图将属性类型指定_field为 set()。上面的更改是否是正确的表达方式,或者它可能会产生一些副作用。
进一步实验:我进一步实验了以下变体(在 Python 3 上):
import pdb
class A(object):
a = set()
'''
class B(object):
__slots__ = ('a')
a = set()
'''
class C(object):
__slots__ = ('a')
def …Run Code Online (Sandbox Code Playgroud) 该__enter__方法的返回值不应该self始终是。
Python文档说:
object.__enter__(self)输入与此对象相关的运行时上下文。with语句会将此方法的返回值绑定到该语句的as子句中指定的目标(如果有)。
这样做,为了做任何实际的事情,不self应该总是从__enter__类的方法中返回它,否则,就不能从上下文中调用其他类方法。
例如,在下面的代码中,s.main()可以正常工作,但b1.main()会出错。
class a(object):
def __init__(self):
pass
def __enter__(self):
return self
def __exit__(self ,type, value, traceback):
return self
def main(self):
print " in a::main self %d " , id(self)
class b(object):
def __init__(self):
pass
def __enter__(self):
return "something else"
def __exit__(self ,type, value, traceback):
pass
def main(self):
print "in b::main !! self id " , id(self)
with a() as s:
s.main()
with b() as b1:
b1.main()
s …Run Code Online (Sandbox Code Playgroud) 我有
x = {'a':set([1]) , 'b':set([2]), 'c':set([3]) }
Run Code Online (Sandbox Code Playgroud)
保证集合中只有一个元素.我需要将其转换为
{'a': 1, 'c': 3, 'b': 2}
Run Code Online (Sandbox Code Playgroud)
以下作品:
x1 = {k:x[k].pop() for k in x.keys()} OR
x1 = {k:next(iter(x[k])) for k in x.keys()}
Run Code Online (Sandbox Code Playgroud)
但我不喜欢它,因为pop()这里正在修改原始集合.我需要帮助.
functools.reduce它.