- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想对列表进行排序并观察/可视化 Python 的排序算法 Timsort正在移动元素。
第一次尝试 : list
的子类每次更改后都会打印出来:
class List(list):
def __setitem__(self, index, value):
list.__setitem__(self, index, value)
print(self)
这在我自己更改元素时有效,但在
sort
期间... 没有:
>>> a = List([None] * 2)
>>> a[0] = 'S'
['S', None]
>>> a[1] = 'P'
['S', 'P']
>>> a.sort()
>>>
第二次尝试 :在每次比较元素时打印列表(在全局变量
a
中):
class Str(str):
def __lt__(self, other):
print(a)
return other > self
这确实有作用,但列表总是......空的?
>>> a = list(map(Str, 'test'))
>>> a.sort()
[]
[]
[]
[]
[]
[]
>>>
为什么这些尝试会失败,有没有办法观察 Timsort 在做什么?
最佳答案
是的,可以观察到。我做到了,这是一个可视化:
还有一个元素更多的:
为什么你的尝试会失败?
list
子类失败,因为 sort
在 C 代码级别的列表“内部”工作,而不是通过公共(public) Python __setitem__
接口(interface)。 /* The list is temporarily made empty, so that mutations performed
* by comparison functions can't affect the slice of memory we're
* sorting (allowing mutations during sorting is a core-dump
* factory, since ob_item may change).
/* [...] Even in case of error, the
* list will be some permutation of its input state (nothing is lost or
* duplicated).
import string
from random import shuffle
from itertools import count
class Str(str):
def __lt__(self, other):
global allowed_comparisons
if allowed_comparisons == 0:
raise Exception
allowed_comparisons -= 1
return other > self
a = list(string.ascii_letters + string.digits + '<>')
shuffle(a)
shown = None
for allowed_comparisons in count():
try:
b = list(map(Str, a))
b.sort()
except:
pass
state = ''.join(b)
if state != shown:
print(state)
shown = state
if list(state) == sorted(state):
break
输出,讨论如下:
k1z5Qi>jCVsfRbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
1kz5Qi>jCVsfRbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15kzQi>jCVsfRbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15Qkzi>jCVsfRbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15Qikz>jCVsfRbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>QikzjCVsfRbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>QijkzCVsfRbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>CQijkzVsfRbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>CQVijkzsfRbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>CQVijkszfRbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>CQVfijkszRbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>CQRVfijkszbBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>CQRVbfijkszBWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>BCQRVbfijkszWSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>BCQRVWbfijkszSnJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>BCQRSVWbfijksznJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>BCQRSVWbfijknszJOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>BCJQRSVWbfijknszOD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>BCJOQRSVWbfijknszD6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
15>BCDJOQRSVWbfijknsz6AZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
156>BCDJOQRSVWbfijknszAZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
156>ABCDJOQRSVWbfijknszZ3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
156>ABCDJOQRSVWZbfijknsz3cGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDJOQRSVWZbfijknszcGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDJOQRSVWZbcfijknszGTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGJOQRSVWZbcfijknszTaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGJOQRSTVWZbcfijknszaIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGJOQRSTVWZabcfijknszIrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknszrvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrszvw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvzw0pePH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz0wpePH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz0pwePH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz0epwPH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz0PepwH94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz0HPepw94UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz09HPepw4UgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz049HPepwUgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz049HPUepwgqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz049HPUegpwqEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz049HPUegpqwEK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz049EHPUegpqwK2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz049EHKPUegpqw2FNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz0249EHKPUegpqwFNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz0249EFHKPUegpqwNYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz0249EFHKNPUegpqwYL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz0249EFHKNPUYegpqwL7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz0249EFHKLNPUYegpqw7Xdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz02479EFHKLNPUYegpqwXdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz02479EFHKLNPUXYegpqwdltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz02479EFHKLNPUXYdegpqwltoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz02479EFHKLNPUXYdeglpqwtoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz02479EFHKLNPUXYdeglpqtwoxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz02479EFHKLNPUXYdeglopqtwxy8uM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz024789EFHKLNPUXYdeglopqtwxyuM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz024789EFHKLNPUXYdeglopqtuwxyM<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz024789EFHKLMNPUXYdeglopqtuwxy<hm
1356>ABCDGIJOQRSTVWZabcfijknrsvz024789<EFHKLMNPUXYdeglopqtuwxyhm
1356>ABCDGIJOQRSTVWZabcfijknrsvz024789<EFHKLMNPUXYdeghlopqtuwxym
1356>ABCDGIJOQRSTVWZabcfijknrsvz024789<EFHKLMNPUXYdeghlmopqtuwxy
01356>ABCDGIJOQRSTVWZabcfijknrsvz24789<EFHKLMNPUXYdeghlmopqtuwxy
012356>ABCDGIJOQRSTVWZabcfijknrsvz4789<EFHKLMNPUXYdeghlmopqtuwxy
0123456>ABCDGIJOQRSTVWZabcfijknrsvz789<EFHKLMNPUXYdeghlmopqtuwxy
01234567>ABCDGIJOQRSTVWZabcfijknrsvz89<EFHKLMNPUXYdeghlmopqtuwxy
012345678>ABCDGIJOQRSTVWZabcfijknrsvz9<EFHKLMNPUXYdeghlmopqtuwxy
0123456789>ABCDGIJOQRSTVWZabcfijknrsvz<EFHKLMNPUXYdeghlmopqtuwxy
0123456789<>ABCDGIJOQRSTVWZabcfijknrsvzEFHKLMNPUXYdeghlmopqtuwxy
0123456789<>ABCDEGIJOQRSTVWZabcfijknrsvzFHKLMNPUXYdeghlmopqtuwxy
0123456789<>ABCDEFGIJOQRSTVWZabcfijknrsvzHKLMNPUXYdeghlmopqtuwxy
0123456789<>ABCDEFGHIJOQRSTVWZabcfijknrsvzKLMNPUXYdeghlmopqtuwxy
0123456789<>ABCDEFGHIJKOQRSTVWZabcfijknrsvzLMNPUXYdeghlmopqtuwxy
0123456789<>ABCDEFGHIJKLOQRSTVWZabcfijknrsvzMNPUXYdeghlmopqtuwxy
0123456789<>ABCDEFGHIJKLMOQRSTVWZabcfijknrsvzNPUXYdeghlmopqtuwxy
0123456789<>ABCDEFGHIJKLMNOQRSTVWZabcfijknrsvzPUXYdeghlmopqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTVWZabcfijknrsvzUXYdeghlmopqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWZabcfijknrsvzXYdeghlmopqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXZabcfijknrsvzYdeghlmopqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcfijknrsvzdeghlmopqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdfijknrsvzeghlmopqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefijknrsvzghlmopqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgijknrsvzhlmopqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijknrsvzlmopqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklnrsvzmopqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnrsvzopqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnorsvzpqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnoprsvzqtuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrsvztuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstvzuwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvzwxy
0123456789<>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
在上面的输出中,请注意有三个阶段:
1356>ABCDGIJOQRSTVWZabcfijknrsvz
。 Timsort 通过二进制插入排序来做到这一点。输出中的每一行对应一个插入。 024789<EFHKLMNPUXYdeghlmopqtuwxy
。再次使用二进制插入排序。 1356>ABCDGIJOQRSTVWZabcfijknrsvz024789<EFHKLMNPUXYdeghlmopqtuwxy
01356>ABCDGIJOQRSTVWZabcfijknrsvz24789<EFHKLMNPUXYdeghlmopqtuwxy
Timsort 真正合并两半的方式是将前半移到临时空间。然后从左到右将两半合并到给定的列表中。所以真正在后半部分的 0
移到前面之后,列表看起来像这样:0--------------------------------24789<EFHKLMNPUXYdeghlmopqtuwxy
所有破折号都是未占用的空间。现在,当我提出我的异常时,Timsort 不仅像那样离开列表,而且至少将前半部分的剩余元素移回那个未占用的空间。这就是为什么在我的输出中,Timsort 似乎将 0
向左移动,并将整个前半部分向右移动一个索引。那将是低效的,当 Timsort 正常运行时不会发生这种情况,没有我的异常(exception)。 states
中而不是打印它们之后,使用
Pillow 生成该图像的代码:
from PIL import Image, ImageDraw
images = []
for i in range(len(states) - 14):
img = Image.new('RGB', (384, 225), (0, 0, 0))
text = '\n'.join(states[i:i+15])
d = ImageDraw.Draw(img)
d.multiline_text((0,0), text, fill=(0, 200, 0))
img = img.resize((384*2, 225*2), 0)
images.append(img)
images[0].save('timatrix.png', save_all=True, append_images=images[1:],
optimize=False, duration=100, loop=0)
关于python - 如何观看 Timsort 移动元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63274410/
我有一个不断增长的日志文件。我如何通过 Ruby 脚本查看和解析它? 脚本将解析写入文件的每个新行,并在新行包含字符串 'ERROR' 时将内容输出到屏幕 最佳答案 def watch_for(fil
我想尝试更新 modelValue 并更改日期选择器中的值 watch(range, (range) => { emit("update:modelValue", range); consol
谁能给我一个例子,说明如何在 ng-include 上观察发射事件?准确地说,我想在我的指令中观察 $includeContentLoaded 事件......这是我的 html:
经过一番努力,我能够使用谷歌驱动器对自己进行身份验证,获取文件列表,获取我想要的文件。现在希望能够捕获google文档数据中的变化,从而知道发生变化的行数和列数。 感觉我的答案就在这里https://
我构建了一个具有指向 promise 的属性的指令。当 promise 解决时,我想运行一个对数据执行某些操作的函数。像这样: scope.$watch('source', function (da
我正在尝试编写一个执行以下操作的 gulp 文件: 运行监视任务,在任何模板更改时重建 Handlebars 模板。 如果构建失败,它会通过notify()方法通知BrowserSync,这样如果出现
我有一个用例,我每天在不同的时刻都有新文件,比如每隔一小时或两小时,所以我需要查看文件夹中的目录,并在添加新文件时触发发送这些新文件的事件我在 NIFI 上的网络服务的路径,知道如何实现这个以及为此使
有人可以推荐一个 JAVA 开源库来监控 FTP 位置更改吗?我正在尝试监视 FTP 位置的更改,一旦检测到更改,更改的文件将被复制到 SVN 位置以进行提交。 最佳答案 Java 远程目录轮询器 (
我想知道是否可以在 Apple Watch Simulator 中模拟心跳,如果可以,如何实现。 谢谢! 最佳答案 是的,您需要使用 HKWorkoutSession 关于xcode - 观看 OS
我目前正在使用 google calendar api 并尝试在 javascript 中编写一个函数,该函数使用 calendar.events.watch 函数以便在用户日历中有更新时进行更新 (
我需要监视网络应用程序中两个目录中的更改(上传的文件)。我创建了一个ServletContextListener来触发对这两个目录的监控。 我的问题是,当第一次监控开始时,线程被阻塞,第二次监控没有启
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improv
我正在开发一个应用程序,当 watch 被激活时,我需要启动一个计时器(使用 NSTimer)。使用计时器,我向 iPhone 询问一些信息(大约每 1 秒一次,最多 5 秒一次)。我用它来启动计时器
我只想向我的 WKInterfaceController 添加图像,但是... Xcode 告诉我: Unable to find image named "circle44" on Watch @I
除了 root_path 之外的所有路由都在产品中中断,即使我的 assert_select 测试所有 GREEN。 The core of the problem was misconfigured
我试图观察用户何时在 IScroll (v5) 中滚动。 我对 angular 还是很陌生,只是在学习编写指令。 从其他示例中,我正在尝试。 我的指令是 app.directive('watchScr
我有一个带有 Controller 的选择输入,当选择一个值时,希望将该值传递给将显示它的指令。 (在本例中,在传单 map 上绘制一个形状)。 问题是我希望该值是“即发即忘” - 因此他们选择形状,
我正在使用 Gulp 来编译和缩小我的 SASS。这工作正常,但我想通过使用 BrowserSync 来扩展自动化。 我已按照一些教程网站上的说明进行操作,但无法使其正常工作 - 当我更新 .scss
一段时间以来,我一直在尝试远离 FTP。 在掌握了 GIT 之后(我错过了什么!),将提交推送到 GitHub,然后最终将更改 pull 到我的远程服务器上并 pull 任何更改)。 我一直在看的一个
我有一个使用 Parse.com 的现有 iOS 应用程序。您可以使用用户名和密码、Facebook 或 twitter 登录,也可以创建新的登录名。我正在准备更新,它有一个 WatchKit 扩展,
我是一名优秀的程序员,十分优秀!