小编Tim*_*ers的帖子

Python:找到第一个不匹配的字符

在Python下,当您想要获取列表中第一次出现的子字符串或字符的索引时,您可以使用以下内容:

s.find("f")
Run Code Online (Sandbox Code Playgroud)

但是,我想找到字符串中第一个不匹配的字符的索引.目前,我正在使用以下内容:

iNum = 0
for i, c in enumerate(line):
  if(c != mark):
    iNum = i
    break
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来做到这一点,比如我不知道的内置函数?

python string

8
推荐指数
1
解决办法
9157
查看次数

Python中的快速数值积分

我有一个程序涉及多次计算一个定积分,并一直在努力寻找一种方法来快速完成.我需要解决的积分有以下形式:

\ INT ^ {B} _ {A(R)} F(X)*G(XR)DX

我必须为r的许多不同值求解这个积分,这既影响积分的极限,也影响积分(通过函数g).因此,我没有找到一种方法来对问题进行矢量化,而必须依赖于循环.这显着减慢了问题,因为我需要在每个循环中进行函数调用.下面是使用循环(使用组合数据和函数)的一种方法:

import numpy as np 

f = lambda x: x**2
g = lambda x: np.log(x)

b=1000
r = np.arange(10,500,10)
a = 1.1*r+r**-1

def loop1(r,a):
    integration_range=[np.linspace(a[i],b,1000) for i in range(len(a))]
    out=np.zeros(len(r))
    i=0
    while i<len(r):
        out[i]=np.trapz(f(integration_range[i])*a_pdf(integration_range[i]-r[i]),integration_range[i])
        i=i+1
    return out  
Run Code Online (Sandbox Code Playgroud)

这大约需要17.7毫秒,这对我目前的需求来说太慢了.我不太关心积分是否超精确; 我很满意一个解决方案,它给出的近似值在真实值的1%以内.任何帮助将不胜感激!

python numpy numerical-methods

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

python strftime无法使用小时分钟和秒

我在这里阅读官方文件

https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

它声明我可以使用

小时,分钟和秒的%H和%M和%S

我这样做:

datetime.date.today().strftime("%Y-%m-%d%H:%M:%S")

而我总是得到

'2016-07-18 00:00:00'

价值在哪里?

python datetime

6
推荐指数
1
解决办法
9056
查看次数

Python读取和写入二进制文件

以下是我的问题

读取二进制文件的前10个字节(稍后操作) -

infile = open('infile.jpg', 'rb')
outfile = open('outfile.jpg', 'wb')
x = infile.read(10)
for i in x:
    print(i, end=', ')
print(x)
outfile.write(bytes(x, "UTF-8"))
Run Code Online (Sandbox Code Playgroud)

第一份印刷声明给出了 -

255, 216, 255, 224, 0, 16, 74, 70, 73, 70, 
Run Code Online (Sandbox Code Playgroud)

第二份印刷声明给出 -

b'\xff\xd8\xff\xe0\x00\x10JFIF'
Run Code Online (Sandbox Code Playgroud)

x中值的十六进制解释.

outfile.write(bytes(x, "UTF-8"))
Run Code Online (Sandbox Code Playgroud)

回报 -

TypeError: encoding or errors without a string argument
Run Code Online (Sandbox Code Playgroud)

那么x必须不是普通字符串,而是字节字符串,它仍然是可迭代的?

如果我想将x的内容写入outfile.jpg,那么我就去 -

outfile.write(x)
Run Code Online (Sandbox Code Playgroud)

现在我尝试取每个x [i]并对每个执行一些操作(下面显示为1的骨骼简单乘积),将值赋给y并将y写入outfile.jpg,使其与infile.jpg相同.所以我尝试 -

infile = open('infile.jpg', 'rb')
outfile = open('outfile.jpg', 'wb')
x = infile.read(10)

yi = len(x)
y = [0 for i in range(yi)] …
Run Code Online (Sandbox Code Playgroud)

binary file python-3.x

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

python多处理:为什么在终止后进程失效?

我有一些python多处理代码,父进程启动一堆子工作进程,然后在一段时间后终止它们:

from multiprocessing import Process

nWorkers = 10
curWorkers = []
for iw in range(nWorkers):
    pq = Process(target=worker, args=(worker's_args_here))
    pq.start()
    curWorkers.append(pq)

# Do work here...

for pw in curWorkers:
    pw.terminate()
Run Code Online (Sandbox Code Playgroud)

但是,子进程在终止后很长时间都显示为已停止运行.他们是僵尸进程吗?更重要的是,我应该如何终止它们以便它们真正消失?

python terminate multiprocessing zombie-process

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

FindRootTest不起作用

File "/Users/SalamonCreamcheese/Documents/4.py", line 31, in <module>
    testFindRoot()
File "/Users/SalamonCreamcheese/Documents/4.py", line 29, in testFindRoot
    print " ", result**power, " ~= ", x
TypeError: unsupported operand type(s) for ** or pow(): 'tuple' and 'int'
Run Code Online (Sandbox Code Playgroud)

任何帮助都将受到高度赞赏,我不明白为什么它说结果**的力量是类型的,我是假设意义字符串,为什么这是一个错误.提前感谢您的任何反馈.

def findRoot(x, power, epsilon):
    """Assumes x and epsilon int or float,power an int,
        epsilon > 0 and power >= 1
    Returns float y such that y**power is within epsilon of x
        If such a float does not exist, returns None"""
    if x < 0 and power % …
Run Code Online (Sandbox Code Playgroud)

python

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

冒泡排序优于选择排序大幅度

我目前正在尝试理解排序算法,并一直在寻找伪代码并将其转换为python(使用python 3.6,IDE是Spyder 3.1.2).我写了一个简单的冒泡排序:

def BubbleSort(array_to_sort):
    n = len(array_to_sort) - 1
    swapped = True
    while (swapped):
        swapped = False
        for i in range(n):
             if array_to_sort[i] > array_to_sort[i+1]:
                array_to_sort[i+1], array_to_sort[i] = array_to_sort[i], array_to_sort[i+1] 
                swapped = True
    return array_to_sort
Run Code Online (Sandbox Code Playgroud)

一个简单的选择排序:

def SelectionSort(array_to_sort):
    n = len(array_to_sort)
    for i in range(n):
        minPos = i
        for j in range(i+1, n):
            if array_to_sort[j] < array_to_sort[minPos]:
                minPos=j

        if minPos != i:
            array_to_sort[i], array_to_sort[minPos] = array_to_sort[minPos], array_to_sort[i] 

    return array_to_sort
Run Code Online (Sandbox Code Playgroud)

我试图像他们这样计时:

def main():
    array = RandomNumberArray()
    a = timeit.Timer(functools.partial(BubbleSort, array)) …
Run Code Online (Sandbox Code Playgroud)

sorting algorithm computer-science python-3.x

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

埃拉托色尼筛中的生成器递归跳过步骤

我在这里编写的筛选算法遇到了问题。我已经尝试修复它总共大约10个小时了。我在这里四处寻找类似的问题,但似乎找不到任何遇到此问题的人。我对 python 比较陌生,在阅读了大量生成器文档后,我设法编写了有效的代码。然而,我仍然不知道为什么我的第一次尝试失败了。

我所想到的是,在每个连续的筛分步骤中,似乎 gen1 实际上并没有被清空。因此,我尝试交替使用名称 gen1 和 gen2,并删除每个名称以避免此问题。那也没用。

我真的很感激对此的一些见解,以及任何改进我现在所拥有的建议。

这是失败的代码:

def primes(n):
    "yields primes up to n. For use with large n"
    q = 0
    yield 2
    gen1 = (x for x in range(3,n,2))
    while q*q < n:
        q = next(gen1)
        gen1 = (x for x in gen1 if x%q != 0)
        yield q
    else:
        while 1:
            try:
                yield next(gen1)
            except:
                StopIteration
                break
Run Code Online (Sandbox Code Playgroud)

这是我当前的代码:

import math
global gen1
global gen
def gen1(x):
    for i in range(3,x,2):
        yield i
def …
Run Code Online (Sandbox Code Playgroud)

python recursion generator generator-expression sieve-of-eratosthenes

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