小编Fre*_*red的帖子

字符串切片是否在内存中执行复制?

我想知道是否:

a = "abcdef"
b = "def"
if a[3:] == b:
    print("something")
Run Code Online (Sandbox Code Playgroud)

实际上是否执行了a内存中某处“def”部分的副本,或者是否就地完成了字母检查?

注意:我说的是一个字符串,而不是一个列表(我知道答案)

python python-3.x

40
推荐指数
1
解决办法
2015
查看次数

1附近的纹理坐标表现奇怪

我正在使用(Py)OpenGL来显示256色索引图像.我使用着色器和包含调色板的一维纹理.这是片段着色器代码:

#version 330
uniform sampler2D texture; 
uniform sampler1D palette;

void main() 
{ 
    vec2 uv = gl_TexCoord[0].xy; 
    vec4 color = texture2D(texture, uv); 
    gl_FragColor = texture1D(palette, color.a) ;
}
Run Code Online (Sandbox Code Playgroud)

为避免舍入错误,所有MAG和MIN过滤器都设置为NEAREST.

我看到1D纹理的纹理坐标的方式是:

  • 颜色0位于区间[0; 1/256 [
  • 颜色1位于区间[1/256; 2/256 [...
  • 颜色255位于区间[255/256; 1 [

我将自己的整数索引转换为0到1之间的浮点数,以确保发生了什么,使用公式x_float =(x_int + .4)/ 256,即x_float位于前面提到的区间内,稍早于其中心(到避免结果在间隔的错误一侧舍入).

但它不起作用.我制作了256个细胞的检查板,颜色索引为0到255,灰色等级调色板(从0x000000到0xFFFFFF).代码如下.然后我制作了一个屏幕快照并在Paint.NET中编辑它以查看颜色是否正确,并注意到颜色为0xE0的跳转:我得到两次颜色0xDF,并且从这一个,所有内容都移动了一个:最后一个颜色是0xFE而不是0xFF

我怀疑某种舍入错误,但不知道如何...

这是完整的代码:

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

from OpenGL.arrays import vbo
from OpenGL.GL import shaders
from numpy import *

def checkboard(size = 512, cell = 32):
    bitmap = zeros(size …
Run Code Online (Sandbox Code Playgroud)

python opengl numpy glsl

5
推荐指数
1
解决办法
736
查看次数

几秒后Pygame窗口没有响应

几秒钟后(大约5秒),这段简单的代码崩溃(窗口没有响应).

import pygame
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((640, 480), 0, 24)
#clock = pygame.time.Clock()

#font = pygame.font.Font(None, 32)

cycles = 0
while True:
    screen.fill(0)
#    text = font.render('Cycles : %d' % cycles, True, (255, 255, 255))
#    screen.blit(text, (100, 100))

    cycles += 1

    pygame.display.update()
Run Code Online (Sandbox Code Playgroud)

如果我取消注释注释行,我可以清楚地看到程序在显示47到50之间的值时失控.

我使用python 2.7和pygame 1.9.2,Windows 8(64位)和Eclipse + PyDev.

python pygame

5
推荐指数
2
解决办法
1万
查看次数

测试给定数组的子数组

这是初学者Numpy用户的一个基本问题:我有一个5行2列的2D数组,你可以看到10个2d向量,我想测试一个给定的向量是否在表中.

例如 :

>>> tableau = array(range(10), dtype = uint8)
>>> tableau.shape = (5,2)
>>> print tableau
[[ 0  1]
 [ 2  3]
 [ 4  5]
 [ 6  7]
 [ 8  9]]
>>> [0, 1] in tableau
True
Run Code Online (Sandbox Code Playgroud)

最后一行给出了True,但在'tableau'中也是'[0,2].

目前,我计算欧几里得距离是否为0,但我确信这是一个更简单的答案.

谢谢你的帮助

python numpy

4
推荐指数
1
解决办法
1927
查看次数

标签 统计

python ×4

numpy ×2

glsl ×1

opengl ×1

pygame ×1

python-3.x ×1