什么是Python中的懒惰评估?
一个网站说:
在Python 3.x中,range()
函数返回一个特殊的范围对象,它根据需要计算列表的元素(延迟或延迟评估):
>>> r = range(10)
>>> print(r)
range(0, 10)
>>> print(r[3])
3
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
假设我们想要在'a'和'b'都等于5时执行一些代码块.然后我们可以这样编写:
if a == 5 and b == 5:
# do something
Run Code Online (Sandbox Code Playgroud)
但是几天前,我只是不由自主地写了一个类似的条件检查:
if a == b and b == 5:
# do something
Run Code Online (Sandbox Code Playgroud)
这让我想到,两者之间有什么区别吗?另外,还有另一种方式,
if a == b == 5:
# do something
Run Code Online (Sandbox Code Playgroud)
是否存在任何差异,评估或执行过程或所花费的时间有何不同?还有哪一个更好或哪个更好?
它与传递性的概念有关吗?
我使用cv2.putText()在图像上绘制文本字符串.
我写的时候:
cv2.putText(img, "This is \n some text", (50,50), cv2.FONT_HERSHEY_SIMPLEX, 1, 2)
Run Code Online (Sandbox Code Playgroud)
图像上绘制的文字是:
This is ? some text
我期待文本在新行中打印,因为它\n
是换行符的转义字符,但它会?
在图像上绘制.
为什么会这样?难道我做错了什么 ?
我试图运行使用Python中的OpenCV编写一个脚本,使用网络摄像头追踪彩色对象(这里的对象是蓝色),这也是OpenCV的文档中提到这里
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while(1):
# Take each frame
_, frame = cap.read()
# Convert BGR to HSV
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# define range of blue color in HSV
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
# Threshold the HSV image to get only blue colors
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# Bitwise-AND mask and original image
res = cv2.bitwise_and(frame,frame, mask= mask)
cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.imshow('res',res)
k = cv2.waitKey(5) & 0xFF
if k == …
Run Code Online (Sandbox Code Playgroud) 描述:
我正在使用Python和OpenCV解决rubiks cube.为此我试图提取立方体的所有颜色(单个立方体块),然后应用适当的算法(我设计的,没有问题).
问题:
假设我已经提取了立方体的所有颜色,我如何找到提取的立方体的位置.就像我怎么知道它是在上中下层还是它的角落 - 中间边缘的一块.
我做了什么:
这里我刚刚提取出黄色.
颜色提取后:
原始图像
代码
import numpy as np
import cv2
from cv2 import *
im = cv2.imread('v123.bmp')
im = cv2.bilateralFilter(im,9,75,75)
im = cv2.fastNlMeansDenoisingColored(im,None,10,10,7,21)
hsv_img = cv2.cvtColor(im, cv2.COLOR_BGR2HSV) # HSV image
COLOR_MIN = np.array([20, 100, 100],np.uint8) # HSV color code lower and upper bounds
COLOR_MAX = np.array([30, 255, 255],np.uint8) # color yellow
frame_threshed = cv2.inRange(hsv_img, COLOR_MIN, COLOR_MAX) # Thresholding image
imgray = frame_threshed
ret,thresh = cv2.threshold(frame_threshed,127,255,0)
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
print type(contours)
for …
Run Code Online (Sandbox Code Playgroud) 这是我的代码,它启动网络摄像头:
import pygame.camera
import pygame.image
import sys
pygame.camera.init()
cameras = pygame.camera.list_cameras()
print "Using camera %s ..." % cameras[0]
webcam = pygame.camera.Camera(cameras[0])
webcam.start()
# grab first frame
img = webcam.get_image()
WIDTH = img.get_width()
HEIGHT = img.get_height()
screen = pygame.display.set_mode( ( WIDTH, HEIGHT ) )
pygame.display.set_caption("pyGame Camera View")
while True :
for e in pygame.event.get() :
if e.type == pygame.QUIT :
sys.exit()
# draw frame
screen.blit(img, (0,0))
pygame.display.flip()
# grab next frame
img = webcam.get_image()
Run Code Online (Sandbox Code Playgroud)
我想知道如何捕获图像并将其存储到当前目录.请提出所需的更改建议.
我正在抓一个网站www.lipperleaders.com.我想提取新加坡的资金细节.我已成功实施下拉选择,并提取了提交选项后出现的第一页的内容.但是当我尝试转到下一页(通过使代码单击下一个按钮)时,我收到错误'Element is no longer attached to the DOM'
.
我的代码大约有100行,但我可以大致了解代码的执行流程:
... # creating driver object and all the imports
def main():
...
result = find_elements_by_tag_name('span')
...
driver.find_element_by_id("ctl00_ContentPlaceHolder1_ucDataPager_btnNext").click()
main()
main()
Run Code Online (Sandbox Code Playgroud)
此代码适用于第1页,但main()
在单击下一个按钮后再次调用时.在这个递归方法之前,我也试过把它放在一个循环中,然后也是同样的错误.
如果我写相同的代码,如:
# some code
result = find_elements_by_tag_name('span')
driver.find_element_by_id("ctl00_ContentPlaceHolder1_ucDataPager_btnNext").click()
# some code
driver.find_element_by_id("ctl00_ContentPlaceHolder1_ucDataPager_btnNext").click()
.
.
Run Code Online (Sandbox Code Playgroud)
这段代码可以很好地处理下一页加载的任何错误,并执行之后编写的代码.但是我不能driver.find_element_by_id().click()
为500页写相同的内容,即使我必须重复与每个页面相关的其余代码.这就是为什么我尝试循环或递归,但它不适合我.
请让我知道我的方法有什么问题.
我有一个这样的txt文件:
audi lamborghini
ferrari
pagani
Run Code Online (Sandbox Code Playgroud)
当我使用这段代码时:
with open("test.txt") as inp:
data = set(inp.read().split())
Run Code Online (Sandbox Code Playgroud)
这给出了以下数据: ['pagani', 'lamborghini', 'ferrari', 'audi']
我想要的是从txt文件中提取文本,逐行输出数据
['audi lamborghini','ferrari','pagani']
怎么做到这一点?
什么是memoization,它是如何在python中使用的?以及它与递归的不同之处.在某个地方,我遇到了一个声明,为了减少递归程序或函数的执行时间,我们应该使用memoization而不是递归.例如:
def factorial( n ):
if n <1: # base case
return 1
else:
return n * factorial( n - 1 ) # recursive call
Run Code Online (Sandbox Code Playgroud)
如果这是计算阶乘的递归函数,那么在使用memoization时会有什么变化?
有人可以解释我int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
C函数如何工作吗?
我认为它为文件流设置了一个缓冲区,并将数据存储在按大小块数据分配的缓冲区setvbuf
中size_t
,对吗?当缓冲区已满时,将其刷新?
对不起,我是新来的
python ×9
opencv ×3
c ×1
memoization ×1
pygame ×1
python-2.7 ×1
python-3.x ×1
recursion ×1
selenium ×1
web-crawler ×1