越来越多的库被移植到Python 3,我怀疑随着时间的推移,这些变化会越来越快.但是,作为Python的非新手,我使用了很多第三方库(matplotlib,pygame,pyGTK,Tkinter等).我知道我应该能够去他们的网站找出他们是否支持python3k,但我想知道:是否有任何网站已经有某种类型的第三方模块列表在Py3k中工作?
谢谢
我有一个shell脚本,最后一行如下:
pip install .
它有什么作用?
当我们运行时pip install package-name,它将安装指定的包.同样,当我们运行pip install -r requirements.txt它时,安装所有指定的包requirements.txt.但我不确定上面的命令是做什么的.
我按照这个问题中的说明,文档,我甚至看过这个,但到目前为止,我无法使用我的静态文件python manage.py runserver.
这些是我的(相关?)设置:
STATIC_ROOT '/home/wayne/programming/somesite/static'
STATICFILES_DIRS ('/home/wayne/programming/somesite/static/styles',
'/home/wayne/programming/somesite/static/admin')
Run Code Online (Sandbox Code Playgroud)
在我的urls.py中:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# The rest of my urls here...
if settings.DEBUG:
urlpatterns += staticfiles_urlpatterns()
Run Code Online (Sandbox Code Playgroud)
我在base.html中有以下代码
<link rel="stylesheet" type="text/css" href="{% static "styles/main.css" %}">
{% block styles %}
{% for sheet in styles %}
<link rel="stylesheet" type="text/css" href="{% static sheet %}">
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
而且我保证我不会产生幻觉:
(.env)wayne:~/programming/somesite/static$ pwd
/home/wayne/programming/somesite/static
(.env)wayne:~/programming/somesite/static$ ls
admin styles
Run Code Online (Sandbox Code Playgroud)
但是,当导航到http://localhost:8000/我的网站时缺少其样式表,当我去,http://localhost:8000/static/styles/main.css我'styles/main.css' could not …
在Lisp中,你可以有这样的东西:
(setf my-stuff '(1 2 "Foo" 34 42 "Ni" 12 14 "Blue"))
(format t "~{~d ~r ~s~%~}" my-stuff)
Run Code Online (Sandbox Code Playgroud)
迭代同一个列表的最Pythonic方法是什么?首先想到的是:
mystuff = [1, 2, "Foo", 34, 42, "Ni", 12, 14, "Blue"]
for x in xrange(0, len(mystuff)-1, 3):
print "%d %d %s" % tuple(mystuff[x:x+3])
Run Code Online (Sandbox Code Playgroud)
但这对我来说感觉很尴尬.我确定有更好的方法吗?
好吧,除非有人后来提供了一个更好的例子,我认为gnibbler的解决方案是最好的\最接近的,尽管它起初可能并不那么明显它是做什么的:
mystuff = [1, 2, "Foo", 34, 42, "Ni", 12, 14, "Blue"]
for x in zip(*[iter(mystuff)]*3):
print "{0} {1} {2}".format(*x)
Run Code Online (Sandbox Code Playgroud) 我们现在都知道(我希望),Python 3正在慢慢开始取代Python 2.x. 当然,在大多数现有代码最终被移植之前将会有很多年,但是我们现在可以在2.x版本的代码中做些事情来简化切换.
显然,看看3.x中的新功能会有所帮助,但是我们现在可以做些什么来使即将进行的转换更加轻松(如果需要,还可以更容易地将更新输出到并发版本)?我特别考虑的是我们可以启动脚本的行,这将使早期版本的Python更像3.x,尽管其他习惯也是受欢迎的.
添加到我能想到的脚本顶部的最明显的代码是:
from __future__ import division
from __future__ import print_function
try:
range = xrange
except NameError:
pass
Run Code Online (Sandbox Code Playgroud)
我能想到的最明显的习惯是
"{0} {1}!".format("Hello", "World") 字符串格式化.
还有其他任何线条和良好的习惯吗?
所以我没有讲一个很长的故事,我正在研究一些代码,我从二进制文件中读取一些数据,然后使用for循环遍历每一个点.所以我完成了代码,它的运行速度非常慢.我从大约128个数据通道循环了大约60,000个点,这需要一分钟或更长时间来处理.这比我预期的Python运行速度要慢.所以我通过使用Numpy使整个事情变得更有效率但是在试图弄清楚为什么原始进程运行得如此之慢以至于我们进行了一些类型检查并发现我在循环Numpy数组而不是Python列表.好吧没有什么大不了的事情让我们的测试设置输入相同我在循环之前将Numpy数组转换为列表.轰炸相同的慢速代码,花了一分钟才能运行,现在耗时10秒.我被淹没了.我唯一的想法是将Numpy数组更改为Python列表我将其更改回来并且它再次变得很慢.我简直不敢相信,所以我得到了更明确的证据
$ python -m timeit -s "import numpy" "for k in numpy.arange(5000): k+1"
100 loops, best of 3: 5.46 msec per loop
$ python -m timeit "for k in range(5000): k+1"
1000 loops, best of 3: 256 usec per loop
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?我知道Numpy数组和Python列表是不同的,但为什么迭代数组中的每个点都要慢得多?
我在运行Numpy 10.1的Python 2.6和2.7中都观察到了这种行为.我相信.
这个问题在某种程度上与语言无关,但我选择的工具恰好是一个numpy数组.
我正在做的是通过PIL获取两个图像的差异:
img = ImageChops.difference(img1, img2)
Run Code Online (Sandbox Code Playgroud)
我想找到包含从一张图片到另一张图片的变化的矩形区域.当然有内置.getbbox()方法,但是如果有两个区域有变化,它会从一个区域返回一个框到另一个区域,如果每个角落只有1个像素变化,它将返回整个图像.
例如,考虑以下o是非零像素:
______________________
|o ooo |
| oooo ooo |
| o |
| o o |
| |
| oo o |
| o o ooo |
| oo ooooo |
| ooo |
| o |
|____________________|
Run Code Online (Sandbox Code Playgroud)
我想得到包含每个非零区域的边界框的4x4元组.对于边缘情况
oooo
o
o o
Run Code Online (Sandbox Code Playgroud)
结构,我并不十分担心这是如何处理的 - 要么将两个部分单独或一起使用,因为倒L形的边界将完全重叠单个像素的边界.
我从来没有做过任何先进的图像处理,所以我想在我真正写任何东西之前得到一些输入(如果我已经使用的模块中有预先存在的方法,我欢迎他们!).
我的psuedocode-ish版本是这样的:
for line in image:
started = False
for pixel in line:
if pixel and not started:
started = True
save start …Run Code Online (Sandbox Code Playgroud) python language-agnostic numpy image-processing python-imaging-library
在我的程序中,我正在查看一个字符串,我想知道它是否代表一个32位整数.
目前我首先检查它是否是一个数字isdigit(),然后我检查它是否超过2 ^ 32的值(假设我不关心无符号值).
检查输入字符串是否包含有效的32位整数的最佳方法是什么?
在Python中,当我使用update()方法合并两个字典时,任何现有的键都将被覆盖.
有没有办法合并两个字典,同时保持合并结果中的原始键?
更新
假设我们有以下示例:
dict1 = {'bookA': 1, 'bookB': 2, 'bookC': 3}
dict2 = {'bookC': 2, 'bookD': 4, 'bookE': 5}
Run Code Online (Sandbox Code Playgroud)
我们可以合并两个词典,这样结果将保留键的两个值bookC吗?
我想dict3看起来像这样:
{'bookA': 1, 'bookB': 2, 'bookC': (2,3), 'bookD': 4, 'bookE': 5}
Run Code Online (Sandbox Code Playgroud) 有没有办法在python中编写iff语句(即if和only if).我想像使用它一样使用它
for i in range(x)
iff x%2==0 and x%i==0:
Run Code Online (Sandbox Code Playgroud)
但是,iffPython中没有声明.维基百科为iff定义了真值表,如下所示:
a | b | iff a and b
-----------------------
T | T | T
T | F | F
F | T | F
F | F | T
Run Code Online (Sandbox Code Playgroud)
我如何在Python中实现这一目标?
python ×10
numpy ×2
python-3.x ×2
arrays ×1
dictionary ×1
django ×1
formatting ×1
int ×1
iteration ×1
merge ×1
performance ×1
pip ×1
python-2.7 ×1
python-2.x ×1
reference ×1
upgrade ×1