相关疑难解决方法(0)

什么时候不是使用python生成器的好时机?

这与你可以使用Python生成器函数什么相反:python生成器,生成器表达式和itertools模块是我最近python的一些特性.它们在设置操作链以在大量数据上执行时特别有用 - 我经常在处理DSV文件时使用它们.

那么什么时候不是使用生成器,生成器表达式或itertools函数的好时机?

  • 当我应该喜欢zip()itertools.izip(),或
  • range()结束xrange(),或
  • [x for x in foo]结束(x for x in foo)

显然,我们最终需要将生成器"解析"为实际数据,通常是通过创建列表或使用非生成器循环对其进行迭代.有时我们只需知道长度.这不是我要问的.

我们使用生成器,因此我们不会将新列表分配给内存以用于临时数据.这对于大型数据集尤其有用.对于小型数据集也有意义吗?有明显的内存/ CPU权衡吗?

考虑到列表理解性能与map()和filter()的开放性讨论,我特别感兴趣的是,如果有人对此做了一些分析.(alt链接)

python optimization iterator generator

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

如何用RDFLib解析.ttl文件?

我有一个.ttl表格的文件.它有4个属性/列,包含以下形式的四元组:

  1. (id, student_name, student_address, student_phoneno).
  2. (id, faculty_name, faculty_address, faculty_phoneno).

我知道如何.n3使用RDFLib 解析表格三元组;

from rdflib import Graph
g = Graph()
g.parse("demo.nt", format="nt")
Run Code Online (Sandbox Code Playgroud)

但我不确定如何解析这些四倍.

我的目的是解析和提取与特定id有关的所有信息.学生和教师的身份证可以相同.

如何使用RDFLib处理这些四元组并将其用于聚合id

.ttl文件中的示例代码段:

#@ <id1>
<Alice> <USA> <12345>

#@ <id1>
<Jane> <France> <78900>
Run Code Online (Sandbox Code Playgroud)

python parsing python-2.7 turtle-rdf

9
推荐指数
3
解决办法
1万
查看次数

Python:Fibonacci序列

我只是想通过制作一些基本功能来提高我的编程技巧.

我想用斐波纳契值填充一个列表,但我认为我的代码给出了所有数字的总和并打印出来了.

numberlist = []
i = 0
for i in range(20):
    numberlist.append(i)

print numberlist

fibonaccinumbers = []

for n in numberlist:
    def fib(n):
        a, b = 0, 1
        for i in range(n):
            a, b = b, a + b
        return a
    a = fib(n)
    fibonaccinumbers.append(a)


print a
Run Code Online (Sandbox Code Playgroud)

我哪里出错了?

python fibonacci

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

生成器与列表理解

我有一些东西,当作为列表理解运行时,运行正常.

看起来像,

[myClass().Function(things) for things in biggerThing]
Run Code Online (Sandbox Code Playgroud)

Function是一种方法,它构建一个列表.该方法本身不返回任何内容,但列表在其中被操纵.

现在,当我将其更改为发电机时,

(myClass().Function(things) for things in biggerThing)
Run Code Online (Sandbox Code Playgroud)

它不像我期望的那样操纵数据.事实上,它似乎根本没有操纵它.

列表推导生成器之间的功能区别是什么?

python list-comprehension generator

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

python延迟执行

要在Lisp中将实现为延迟列表,建议使用Lisp宏.

(defmacro cons-stream (a b)
   (cons ,a (delay ,b)))

(defmacro delay (expr)
  `(memo-proc (lambda () ,expr)))
Run Code Online (Sandbox Code Playgroud)

用Python和Perl的方式做同样的事情是什么?

编辑.是否可以使用这样一个很酷的结构作为流

(define primes (sieve (integers-starting-from 2)))
Run Code Online (Sandbox Code Playgroud)

在Python和Perl等语言中

lisp python perl sicp

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

迭代两个列表并同步它们

我需要以下列方式迭代两个列表:

伪代码:

j=1
for i=1 to n:
   print a[i], b[j]
   while b[j+1] <= a[i]:
      j++
      print a[i], b[j]
Run Code Online (Sandbox Code Playgroud)

例如:

a = [1 3 5 7]
b = [2 4 9] 
Run Code Online (Sandbox Code Playgroud)

期望的输出:

1 2
3 2
5 2
5 4
7 4
Run Code Online (Sandbox Code Playgroud)

你怎么干净地在python中做到这一点?

python iteration

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

python:返回生成器的一行函数

我想以更简洁的方式编写下面的函数:

def sum_list(l):
    x = 0
    for i in l:
        x += i
    return x
Run Code Online (Sandbox Code Playgroud)

我知道我可以轻松地做到这一点:

def sum_list(l):
    return sum(l)
Run Code Online (Sandbox Code Playgroud)

但是为了更好地理解python,我一直在修改生成器和列表理解.

所以我尝试过:

def sum_list(l):
    x = 0
    return (x += i for i in l)
Run Code Online (Sandbox Code Playgroud)

但这只是返回生成器对象.我记得在某个地方读过它应该在像sum()这样的操作中使用,或者沿着这些行的某些东西,但我似乎找不到那篇文章了.

有人可以指出我的一些文献的方向,或者可能花时间解释一些围绕这种性质的基础知识吗?

python generator

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

如何在不结束Python函数的情况下返回更改变量?

我试图将下面代码的答案返回到变量中,变量应该每5秒更改一次因此我不能使用'return',因为它结束了函数.

例:

from time import sleep

def printit():
    cpt = 1
    while True:
        if cpt < 3:
            number = ("images[" + str(cpt) + "].jpg")
            return number #here is the return
            sleep(5)
            cpt+=1
        else:
            printit()

answer = printit() 
print(answer) #only 1 answer is printed, then the function ends because of the 'return'
Run Code Online (Sandbox Code Playgroud)

解决此问题的解决方案是什么?

变量答案应每5秒更改一次而不结束该功能.

python python-3.x

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