我想解析 2 个(可能)不同长度的生成器zip:
for el1, el2 in zip(gen1, gen2):
print(el1, el2)
Run Code Online (Sandbox Code Playgroud)
但是,如果gen2元素较少,gen1则“消耗”一个额外的元素。
例如,
def my_gen(n:int):
for i in range(n):
yield i
gen1 = my_gen(10)
gen2 = my_gen(8)
list(zip(gen1, gen2)) # Last tuple is (7, 7)
print(next(gen1)) # printed value is "9" => 8 is missing
gen1 = my_gen(8)
gen2 = my_gen(10)
list(zip(gen1, gen2)) # Last tuple is (7, 7)
print(next(gen2)) # printed value is "8" => OK
Run Code Online (Sandbox Code Playgroud)
显然,缺少一个值(8在我之前的示例中),因为在它意识到没有更多元素之前gen1被读取(从而生成值8) …
如果我定义一个小python程序
class a():
def _func(self):
return "asdf"
# Not sure what to resplace __init__ with so that a.func will return asdf
def __init__(self, *args, **kwargs):
setattr(self, 'func', classmethod(self._func))
if __name__ == "__main__":
a.func
Run Code Online (Sandbox Code Playgroud)
我收到回溯错误
Traceback (most recent call last):
File "setattr_static.py", line 9, in <module>
a.func
AttributeError: class a has no attribute 'func'
Run Code Online (Sandbox Code Playgroud)
我想弄清楚的是,如何在不实例化对象的情况下动态地将类方法设置为类?
这个问题的答案是
class a():
pass
def func(cls, some_other_argument):
return some_other_argument
setattr(a, 'func', classmethod(func))
if __name__ == "__main__":
print(a.func)
print(a.func("asdf"))
Run Code Online (Sandbox Code Playgroud)
返回以下输出
<bound method type.func of <class '__main__.a'>> …Run Code Online (Sandbox Code Playgroud) 我知道对于 jupyter notebooks 和 jupyter lab,有可用的代码格式化程序扩展,例如nb_black或blackcellmagic. 但是,当我安装它们时,它似乎不适用于 google colab。
您知道 colab 中是否有任何本机选项或格式化代码的扩展程序(符合 pep8)?
我正在将我的Twitch bot从Python 2.7移植到Python 3.5.我一直收到错误:
a bytes like object is required not 'str'在下面的代码的第二行.
twitchdata = irc.recv(1204)
data = twitchdata.split(":")[1]
twitchuser = data.split("!")[0]
twitchmsg = twitchdata.split(":")[2]
chat = str(twitchuser) +": "+ str(twitchmsg)
print(chat) #prints chat to console
Run Code Online (Sandbox Code Playgroud) 搜索了几个小时后,我想知道是否有可能模拟键盘上的keydown按键.例如,我希望我的程序按住x键五秒钟,所以当我在记事本中运行时,它看起来像是这样的:xxxxxxxxxxxxx.我在互联网上尝试了不同的代码,到目前为止我能找到的最好的东西是:
import ctypes
import time
user32 = ctypes.windll.user32
inputhex = raw_input("Please enter your desired key's code (HEX): ")
keycode = int(inputhex, 16)
time.sleep(1)
#VOID keybd_event(BYTE bVk, BYTE bScan, DWORD dwFlags, PTR dwExtraInfo);
user32.keybd_event(keycode,0,2,0) #is the code for KEYDOWN
time.sleep(5)
#user32.keybd_event(keycode,0,0,0) #is the code for KEYDUP[/code]
Run Code Online (Sandbox Code Playgroud)
Sendkey模块无法解决我的问题,因为它只允许您发送单个按键而不是保持按键事件.我知道autoit,在过去使用它,但我真的想知道这是否可能与python和如何.PS我正在使用python for windows
我想比较不同以在Python中用不同的变量构建一个字符串:
+来连接(被称为"加号")%"".join(list)format功能"{0.<attribute>}".format(object)我比较了3种类型的情景
我每次测量100万次操作并且平均执行超过6次测量.我想出了以下时间:
在每个场景中,我得出以下结论
%比使用format函数格式化要快得多我相信format比%(例如在这个问题中)要好得多,并且%几乎被弃用了.
因此,我有几个问题:
%真的比快format?"{} {}".format(var1, var2)效率更高"{0.attribute1} {0.attribute2}".format(object)?作为参考,我使用以下代码来测量不同的时序.
import time
def timing(f, n, show, *args):
if show: print f.__name__ + ":\t",
r = range(n/10)
t1 = time.clock()
for i in r:
f(*args); f(*args); f(*args); f(*args); f(*args); f(*args); f(*args); …Run Code Online (Sandbox Code Playgroud) 我一直在使用minidom.toprettyxml来美化我的xml文件.当我创建XML文件并使用这个方法时,所有工作都很好,但是如果我在修改了xml文件之后使用它(例如我添加了一个额外的节点)然后我将它写回XML ,我得到空行,每次我更新它,我越来越空行......
我的代码:
file.write(prettify(xmlRoot))
def prettify(elem):
rough_string = xml.tostring(elem, 'utf-8') //xml as ElementTree
reparsed = mini.parseString(rough_string) //mini as minidom
return reparsed.toprettyxml(indent=" ")
Run Code Online (Sandbox Code Playgroud)
结果:
<?xml version="1.0" ?>
<testsuite errors="0" failures="3" name="TestSet_2013-01-23 14_28_00.510935" skip="0" tests="3" time="142.695" timestamp="2013-01-23 14:28:00.515460">
<testcase classname="TC test" name="t1" status="Failed" time="27.013"/>
<testcase classname="TC test" name="t2" status="Failed" time="78.325"/>
<testcase classname="TC test" name="t3" status="Failed" time="37.357"/>
</testsuite>
Run Code Online (Sandbox Code Playgroud)
有什么建议 ?
谢谢.
我大多只使用 xlwings 打开 ( read-write) 工作簿(因为我阅读的工作簿有复杂的宏)。但是我最近开始使用 openpyxl 打开 ( read-only) 工作簿,因为我需要阅读数千个工作簿来抓取一些数据。
我注意到 xlwings 和 openpyxl 读取工作簿的方式有很大的不同。我相信 xlwings 依赖于pywin32阅读工作簿。当您阅读工作簿时xlwings.Book(<filename>),实际工作簿会打开。我有一种感觉,这是一个结果pywin32。
但是,使用openpyxl.load_workbook(<filename>)工作簿时不会出现窗口。我有一种感觉,这是不使用pywin32.
除此之外,我没有进一步了解后端如何为每个库工作。有人可以对此有所了解吗?依赖xlwings和pywin32阅读工作簿是否有好处/成本,而openpyxl不是似乎没有使用pywin32?
我如何在 pandas 或 numpy 中获取一列列表的唯一值,以便第二列来自
会导致'action', 'crime', 'drama'.
我能想出的最接近(但非功能性)的解决方案是:
genres = data['Genre'].unique()
Run Code Online (Sandbox Code Playgroud)
但这可以预见地导致 TypeError 说明列表如何不可散列。
TypeError: unhashable type: 'list'
Set 似乎是个好主意,但是
genres = data.apply(set(), columns=['Genre'], axis=1)
但也会导致
TypeError: set() takes no keyword arguments