在Python中:
>>>"\N{BLACK SPADE SUIT}"
>>>'?'
>>>"\u2660"
>>>'?'
Run Code Online (Sandbox Code Playgroud)
现在,假设我有一个我不知道名字或号码的角色.是否有Python函数提供如下信息:
>>>wanted_function('?')
>>>["BLACK SPADE SUIT", "u2660"]
Run Code Online (Sandbox Code Playgroud)
?
两个以下有什么区别?
float f1 = some_number;
float f2 = some_near_zero_number;
float result;
result = f1 / f2;
Run Code Online (Sandbox Code Playgroud)
和:
float f1 = some_number;
float f2 = some_near_zero_number;
float result;
result = (double)f1 / (double)f2;
Run Code Online (Sandbox Code Playgroud)
我对非常小的f2值特别感兴趣,这些值在浮点运算时可能产生+无穷大.是否有任何准确性?
使用这种演员表的一些实用指南也会很好.
我正在使用Python中的PIL库,我想知道如何确定给定JPG图像的质量.我尝试打开JPG图像做一些事情,并以原始质量再次保存.Image.save让我确定所需的质量:
im.save(name, quality = x)
Run Code Online (Sandbox Code Playgroud)
但我看不出任何提取原始的方法.现在我只是猜测并尝试通过对'质量'参数进行二进制搜索来获得与输入大小相同的输出文件,但这是不可接受的长期解决方案:)
我也尝试使用:Image.info但我的大多数图像在那里没有任何有用的信息(例如:'adobe','icc_profile','exif','adobe_transform')
帮助!
我正在排序整数键的数组.
stdlib.h qsort ;
这很慢,现在我的函数在每次执行的排序上花费0.6秒,stdlib.h qsort是1.0s; 这与std :: sort具有相同的性能
蒂姆索特 ;
我试过这个:https://github.com/swenson/sort和这个:http://code.google.com/p/timsort/source/browse/trunk/timSort.c?specs = snn17&r = 17 ; 两者都明显慢于stdlib qsort
到目前为止,他们对快速排序和插入排序的组合对我的数据来说是最快的; 我尝试了各种设置和pivot作为中间元素(不是3的中位数)和插入排序从28个元素子数组开始(默认情况下不是8)提供最佳性能
贝壳排序 ;
本文中的差距很简单:http://en.wikipedia.org/wiki/Shellsort ; 它很不错,虽然比stdlib qsort慢
我的想法是qsort做了很多交换和废弃(即反向)排序的子序列,所以应该有一些方法通过利用数据的结构来改进它,不幸的是我的所有尝试到目前为止都失败了.
如果你很好奇那是什么类型的数据,那些是在已经在前面板上排序的各种板上评估的扑克牌组(这是排序后的子序列来自哪里).
该功能在C.我使用Visual Studio 2010.任何想法?
示例数据:http://pastebin.com/kKUdnU3N
示例完整执行(1176种):https://dl.dropbox.com/u/86311885/out.zip
我是新手,所以可能会遗漏一些基本的东西.我使用gcc 4.8(MinGW)和-g选项编译我的C程序.
然后我运行它并使用Very Sleepy捕获它.这一切都有效,但Sleepy的输出看起来像这样:
memcpy 0.98 0.98 7.65 7.65 msvcrt unknown 0
[00000000004038FE] 0.77 0.77 6.02 6.02 a 0
memset 0.63 0.63 4.92 4.93 msvcrt unknown 0
[0000000000404549] 0.42 0.42 3.29 3.29 a 0
[000000000040282A] 0.35 0.35 2.73 2.73 a 0
[0000000000404600] 0.25 0.25 1.99 1.99 a 0
....
etc.
Run Code Online (Sandbox Code Playgroud)
(我的应用程序叫做a.exe)
所以Sleepy看不到函数名,我怎么需要编译/运行才能使它工作?困倦的网站给出:
支持GCC/mingw.您现在可以使用嵌入的DWARF2数据分析可执行文件,它应该可以工作.此处不需要特殊选项,只需使用"-g"进行编译即可确保符号存在.您可能还希望使用"-fno-omit-frame-pointer"来确保正确的callstack,尽管Sleepy通常可以以任何方式工作.您不需要使用"-pg"或任何垃圾.它甚至可以在Microsoft DLL之间将正确的堆栈转换为GCC堆栈,这比你想象的要难.
但就我而言,这还不够.
有没有办法告诉C99编译器我要访问给定数组的唯一方法是使用myarray [index]?说这样的话:
int heavy_calcualtions(float* restrict range1, float* restrict range2)
{
float __I promise I won't alias this__ tmpvalues[1000] = {0};
....
heavy calculations using range1, range2 and tmpvalues;
....
}
Run Code Online (Sandbox Code Playgroud)
通过使用restrict我承诺我不会为range1和range2设置别名但是我如何为我的函数内部声明的数组做同样的事情?
我需要一个函数,它接受一个列表并返回唯一元素(如果存在)或[]如果它不存在.如果存在许多独特元素,则应该返回第一个元素(不浪费时间去寻找其他元素).另外我知道列表中的所有元素都来自(小而且已知)集A.例如,这个函数为Ints做了工作:
unique :: Ord a => [a] -> [a]
unique li = first $ filter ((==1).length) ((group.sort) li)
where first [] = []
first (x:xs) = x
ghci> unique [3,5,6,8,3,9,3,5,6,9,3,5,6,9,1,5,6,8,9,5,6,8,9]
ghci> [1]
Run Code Online (Sandbox Code Playgroud)
然而,这不够好,因为它涉及排序(n log n),而它可以在线性时间内完成(因为A很小).另外,它需要列表元素的类型为Ord,而所有应该需要的是Eq.如果比较量尽可能小(例如,如果我们遍历列表并且遇到元素el两次,我们不测试后续元素与el的相等性)也会很好
这就是为什么例如:计算列表中的唯一元素并不能解决问题 - 所有答案都涉及排序或遍历整个列表以查找所有元素的计数.
问题是:如何在Haskell中正确有效地完成它?
在Windows上键入以下GHCI:
foldl (+) 0 $ take 100000000 $ map sqrt [1..]
Run Code Online (Sandbox Code Playgroud)
得到:
<interactive>: out of memory
Run Code Online (Sandbox Code Playgroud)
在编译(使用GHC)并运行此程序时:
main = do
let score = foldl (+) 0 $ take 100000000 $ map sqrt [1..]
putStrLn $ show score
Run Code Online (Sandbox Code Playgroud)
打印预期答案没有内存错误.
这种行为有原因吗?在我看来,像Haskell的懒惰应该防止这一个班轮崩溃.
我在Windows XP上,我遇到了新的Python 3.2期货模块的问题.好像我无法让ProcessPoolExecutor工作.会话示例:
Python 3.2 (r32:88445, Feb 20 2011, 21:29:02) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information.
>>> from concurrent import futures
>>> executor = futures.ProcessPoolExecutor()
>>> def pio(x):
... print("I AM HERE")
... return True
...
>>> fut = executor.submit(pio, 5)
>>> Process Process-1:
Traceback (most recent call last):
File "C:\Python32\lib\multiprocessing\process.py", line 259, in _bootstrap
self.run()
File "C:\Python32\lib\multiprocessing\process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "C:\Python32\lib\concurrent\futures\process.py", line 133, in _process_worker …Run Code Online (Sandbox Code Playgroud) 迭代文件时如何从文件中读取 n 行而不是仅读取一行?我有一个具有明确结构的文件,我想做这样的事情:
for line1, line2, line3 in file:
do_something(line1)
do_something_different(line2)
do_something_else(line3)
Run Code Online (Sandbox Code Playgroud)
但它不起作用:
ValueError:太多值无法解压
现在我正在这样做:
for line in file:
do_someting(line)
newline = file.readline()
do_something_else(newline)
newline = file.readline()
do_something_different(newline)
... etc.
Run Code Online (Sandbox Code Playgroud)
这很糟糕,因为我正在编写无休止的“ newline = file.readline()”,这使代码变得混乱。有什么聪明的方法可以做到这一点吗?(我真的想避免一次读取整个文件,因为它很大)