连接两个列表的最有效方法是什么list_a
,list_b
何时:
list_b
物品必须放在list_a
物品之前list_a
我有四种可能性:
# 1
list_a = list_b + list_a
# 2
for item in list_b:
list_a.insert(0, item)
# 3
for item in self.list_a:
list_b.append(item)
list_a = list_b
# 4
list_a[0:0] = list_b
Run Code Online (Sandbox Code Playgroud)
谢谢!
首先,我不认为这个问题
与Python中的检测64位操作系统(Windows)重复,
因为它还没有得到彻底的回答.
唯一接近的答案是:
使用
sys.getwindowsversion()
或存在PROGRAMFILES(X86)(if 'PROGRAMFILES(X86)' in os.environ
)
但:
PROGRAMFILES(X86)
可靠吗?我担心任何人都可以创建它,即使系统中没有它.sys.getwindowsversion()
才能获得架构?关于sys.getwindowsversion()
:
链接http://docs.python.org/library/sys.html#sys.getwindowsversion
将我们引导至http://msdn.microsoft.com/en-us/library/ms724451%28VS.85%29. aspx
但我没有看到任何与架构相关的东西(32位/ 64位).
此外,返回元组中的平台元素似乎独立于体系结构.
最后一点:我正在寻找一个使用python 2.5和从Windows XP开始的Windows版本的解决方案
谢谢!
编辑:
相关信息可以在
http://msdn.microsoft.com/en-us/library/ms724340%28v=VS.85%29.aspx
获得,但我怎么能用python得到这个?
Edit2:在64位窗口上,带有32位python解释器:
我正在努力进行打印和unicode转换.这是在2.5 windows解释器中执行的一些代码.
>>> import sys
>>> print sys.stdout.encoding
cp850
>>> print u"é"
é
>>> print u"é".encode("cp850")
é
>>> print u"é".encode("utf8")
?®
>>> print u"é".__repr__()
u'\xe9'
>>> class A():
... def __unicode__(self):
... return u"é"
...
>>> print A()
<__main__.A instance at 0x0000000002AEEA88>
>>> class B():
... def __repr__(self):
... return u"é".encode("cp850")
...
>>> print B()
é
>>> class C():
... def __repr__(self):
... return u"é".encode("utf8")
...
>>> print C()
?®
>>> class D():
... def __str__(self):
... return u"é"
... …
Run Code Online (Sandbox Code Playgroud) 我实际上正在努力处理一些代码.我知道它可以重构,但我找不到漂亮的智能优雅的解决方案.
这里有两个函数(我的代码中有更多类似的函数):
def fooA(param1, param2):
if param2 == True:
code_chunk_1
fooA_code #uses only param1
if param2 == True:
code_chunk_2
def fooB(param1, param2):
if param2 == True:
code_chunk_1
fooB_code #uses only param1
if param2 == True:
code_chunk_2
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是使用这个装饰器:
def refactorMe(func):
def wrapper(*args):
if args[-1]:
code_chunk_1
func(*args)
if args[-1]:
code_chunk_2
return wrapper
Run Code Online (Sandbox Code Playgroud)
最后:
@refactorMe
def fooA(param1, param2):
fooA_code #uses only param1
@refactorMe
def fooB(param1, param2):
fooB_code #uses only param1
Run Code Online (Sandbox Code Playgroud)
不幸的是,我对这个解决方案不满意:
也许我没有将装饰器用于其最初目的?
有没有其他方法来重构代码?
非常感谢!