由于OrderedDict具有列表(具有有序元素)和字典(使用键而不是索引)的特征,因此使用键切片似乎很自然.
>>> from collections import OrderedDict
>>> cities = OrderedDict((('san francisco', 650), ('new york', 212), ('shanghai', 8621), ('barcelona', 42423)))
>>> test['shanghai':] # I want all the cities from shanghai to the end of the list
TypeError: unhashable type
Run Code Online (Sandbox Code Playgroud)
有趣的是,由于OrderedDictionary.__getslice__没有实施,这不是你看到的错误.我尝试添加自己的__getslice__方法OrderedDict,但我一直遇到这个TypeError问题.似乎Python正在进行某种类型检查以强制切片键只是整数,在它们传递给__getslice__函数之前,是多少unpythonic!
>>> class BetterOrderedDict(OrderedDict):
def __getslice__(self, start=None, end=None, step=1):
return 'potato'
>>> test = BetterOrderedDict((('one', 1), ('two', 2), ('three', 3), ('four', 4)))
>>> print test[1:4]
'potato' # ok this makes sense so …Run Code Online (Sandbox Code Playgroud) python dictionary ordereddictionary python-2.7 python-internals
我正在试图拆开并去除这个产生这个标题的python代码:
_ = (
255,
lambda
V ,B,c
:c and Y(V*V+B,B, c
-1)if(abs(V)<6)else
( 2+c-4*abs(V)**-0.4)/i
) ;v, x=1500,1000;C=range(v*x
);import struct;P=struct.pack;M,\
j ='<QIIHHHH',open('M.bmp','wb').write
for X in j('BM'+P(M,v*x*3+26,26,12,v,x,1,24))or C:
i ,Y=_;j(P('BBB',*(lambda T:(T*80+T**9
*i-950*T **99,T*70-880*T**18+701*
T **9 ,T*i**(1-T**45*2)))(sum(
[ Y(0,(A%3/3.+X%v+(X/v+
A/3/3.-x/2)/1j)*2.5
/x -2.7,i)**2 for \
A in C
[:9]])
/9)
) )
Run Code Online (Sandbox Code Playgroud)
来源:http://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python/
我发现了一个有趣的扭曲的for循环,我不确定它是否只是混淆的一部分,或者如果它实际上有一个功能.中间线:
for X in j('BM'+P(M,v*x*3+26,26,12,v,x,1,24))or C:
最后做什么或做什么?
为清楚起见,我重新编写了如下代码:
import struct
image_name = "M.bmp"
mandlebrot = lambda V,B,c :c and Y(V*V+B,B,c-1) if(abs(V)<6) else (2+c-4*abs(V)**-0.4)/i
y,x = 600,800
pixelrange …Run Code Online (Sandbox Code Playgroud) 我想列出所有范围内的蓝牙设备,理想情况下是主机名,但MAC地址就足够了.我需要一个执行主动扫描的命令,以便我可以查看我的设备是否在附近,而不是列出以前配对设备的设备.
我的用例是检测我的蓝牙耳机或iPhone是否在我的Mac范围内,以触发安全设置更改(例如sudo超时).我已经做了很多谷歌搜索,我似乎能找到的唯一的东西是iOS快速代码示例.我很满意OS X Swift代码示例,AppleScript,终端实用程序或指向优秀文档的指针.
到目前为止我已经看过这些选项了:
blued:打印一个mac地址列表,但是当设备进入或超出范围或连接时它们似乎没有改变,并且它们与主机名不匹配blueutil(brew install blueutil):仅打印电源状态,而不是设备名称bluetoothaudiod:没有可用的界面Bluetooth Explorer.appGUIdtrace来看看如何Bluetooth Explorer.app计算列表:困难不得已而为之编辑2017/01:找到这个SO答案,详细介绍如何在Swift中查找附近的设备:列出 Swift
中蓝牙设备范围内的设备
编辑2017/10:找到Swift 3和4.0的更新SO答案:使用Swift 3.0附近的蓝牙设备
如何使用Selenium Web测试仪将Keys.DELETE击键发送到文本字段?我正在尝试模拟用户键入字段,然后删除他们键入的内容以测试交互式自动提供功能.它应该将列表过滤到以查询开头的项目,然后在删除查询时再次显示所有可能的建议.发送.clear()的Unfortunatley无法再次取消筛选列表.send_keys('\ 127')也没有.
def get_suggestions():
driver.get('https://www.example.com/')
driver.find_element_by_css_selector('#searchQuery').click()
driver.find_element_by_css_selector('#searchQuery').send_keys('a')
sleep(0.5)
driver.find_element_by_css_selector('#searchQuery').send_keys(Keys.DELETE)
sleep(0.5)
for suggestion in driver.find_elements_by_css_selector('#search-form #suggestions'):
yield suggestion
Run Code Online (Sandbox Code Playgroud)
如何模拟用户按下键盘上的删除按钮?
我确信这也适用于其他编译器,但我只使用GCC.如果编译器通过删除非代码(注释,空格等)的无关内容来优化代码,它如何正确显示原始文件中的错误行?它是否仅在检查错误后优化代码?或者它以某种方式插入标签,以便如果发现错误,它知道它在哪一行?
mycode.cpp: In function ‘foo(int bar)’:
mycode.cpp:59: error: no matching function for call to ‘bla(int bar)’
Run Code Online (Sandbox Code Playgroud) 我正在使用Python 3.5.1和新发布的MyPy v0.4.1静态类型分析器.
我有一些更复杂的代码,我已经减少到重现错误所需的最简单的python类:
class MyObject(object):
def __init__(self, value: int=5) -> None:
self.value = value
def __eq__(self, other: MyObject) -> bool:
return self.value == other.value
Run Code Online (Sandbox Code Playgroud)
运行类型检查器mypy test.py会产生以下错误:
test.py: note: In class "MyObject":
test.py:5: error: Argument 1 of "__eq__" incompatible with supertype "object"
Run Code Online (Sandbox Code Playgroud)
我的基础上的理论,这些文档是__eq__和__ne__对象上已经定义的类型,这是与这些类型的我子类的重新定义冲突.我的问题是如何定义这些类型以确保__eq__使用我选择的类型进行类型检查.
我正在尝试编写一个sudo !!与 Bash等效的函数。它有效,但仅当最后一个命令没有参数时。
到目前为止的功能是:
function s --description "Run last command (or specified command) using sudo"
if test $argv
switch $argv[1]
case '!!'
command sudo (echo $history[1])
case '*'
command sudo $argv
end
else
command sudo fish
end
end
Run Code Online (Sandbox Code Playgroud)
测试相关行:
$ command sudo whoami
root
$ whoami
nick
$ command sudo (echo $history[1])
root
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,现在让我们尝试一个带有几个参数的命令:
$ echo hi >> /etc/motd
An error occurred while redirecting file '/etc/motd'
open: Permission denied
$ command sudo (echo $history[1])
sudo: echo hi >> …Run Code Online (Sandbox Code Playgroud) 我有大约 4000 万行制表符分隔的 .txt 文件,其中包含以下列:
1 rs58108123 10583
1 rs58108140 10611
1 rs58123442 13302
...
Run Code Online (Sandbox Code Playgroud)
我需要在第 1 列位置将第 1 列和第 3 列合并为一列。这是所需的输出:
1:10583 rs58108123
1:10611 rs58108140
1:13302 rs58123442
...
Run Code Online (Sandbox Code Playgroud)
据我了解,这可以使用 awk 命令来完成。我对命令行非常陌生,因此我无法弄清楚完成此任务所需的规范。如果您能提供任何可能的解决方案的解释,我们将不胜感激!
非常感谢!!
python ×4
applescript ×1
awk ×1
bash ×1
bluetooth ×1
c++ ×1
dictionary ×1
fish ×1
for-loop ×1
fractals ×1
g++ ×1
macos ×1
mypy ×1
obfuscation ×1
objective-c ×1
python-2.7 ×1
python-3.x ×1
selenium ×1
swift ×1
typechecking ×1
types ×1