相关疑难解决方法(0)

Python,有效的方式来操作坐标对

我有一个数据文件,其中包含纬度和经度信息,我已将其存储为表单的元组列表

[(lat1, lon1), (lat1, lon1), (lat2, lon2), (lat3, lon3), (lat3, lon3)  ...]
Run Code Online (Sandbox Code Playgroud)

如上所示,如果数据文件中的位置没有改变,则连续位置(lat,lon)可以是相同的.因此,订单在这里非常重要.我感兴趣的是一种相当有效的方法来检查坐标何时改变lat1, lon1 -> lat2, lon2等,然后获得这两个坐标之间的距离.

我已经有了一个函数来获取表单的距离,该距离getDistance(lat1, lon1, lat2, lon2)返回这些位置之间的计算距离.我想将这些距离存储在一个列表中,稍后我可以从中做一些绘图.

python tuples list coordinates

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

函数生成器Python

我试图实现一个函数发生器使用n次.我的想法是创建一个生成器对象,然后将该对象分配给另一个变量,并将重新分配的变量作为函数调用,例如:

def generator:
   [...]
   yield ...

for x in xrange(10):
   function = generator
   print function(50)
Run Code Online (Sandbox Code Playgroud)

当我调用print函数时,我发现function(50)没有调用它.相反,输出是:<generator object...>.我试图通过将此函数分配给生成器函数10次并使用此新变量作为生成器函数来尝试使用此函数.

我怎么能纠正这个?

python generator

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

Python - 为什么这段代码被认为是生成器?

我有一个名为'mb'的列表,其格式为:

['Company Name', 'Rep', Mth 1 Calls, Mth 1 Inv Totals, Mth 1 Inv Vol, Mth 2 
Run Code Online (Sandbox Code Playgroud)

...等等

在下面的代码中,我只需附加一个38 0的新列表.这可以.

但是在下一行中我得到一个错误:'generator'对象不支持项目分配

任何人都可以告诉我:1)如何纠正这个错误,2)为什么下面的len(mb)-1被认为是一个发电机.

注意:row [0]仅仅是另一个列表中的"公司名称".

mb.append(0 for x in range(38))
mb[len(mb)-1][0]=row[0]
Run Code Online (Sandbox Code Playgroud)

python list generator python-3.x

2
推荐指数
2
解决办法
228
查看次数

正则表达式中\d{1-3}的含义

我已经搜索了很长时间但没有找到我的问题的答案,可以告诉我是什么意思

(?:[-\w\d{1-3}]+\.)+
Run Code Online (Sandbox Code Playgroud)

并不是

(?:[-\w\d{1,3}]+\.)+
Run Code Online (Sandbox Code Playgroud)

我不明白 {1-3} 部分,也找不到它的意思。谢谢

regex

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

如何在不破坏循环的情况下返回值?

我想知道如何在不破坏Python循环的情况下返回值.

这是一个例子:

def myfunction():
    list = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
    print(list)
    total = 0
    for i in list:
        if total < 6:
            return i  #get first element then it breaks
            total += 1
        else:
            break

myfunction()
Run Code Online (Sandbox Code Playgroud)

return 只会得到第一个答案,然后离开循环,我不希望这样,我想返回多个元素,直到该循环结束.

如何解决这个问题,有什么解决方案吗?

python function return-value

2
推荐指数
2
解决办法
6819
查看次数

Python的迭代是否真的将所有值存储在内存中?

我正在阅读e-satisf'回答"yield"关键字在Python中的作用?.他说:

这些迭代很方便,因为你可以根据自己的意愿阅读它们,但是你将所有的值存储在内存中,当你有很多值时,这并不总是你想要的

我真的不同意.但我不能在那里发表评论.

然后是这个问题:Python的迭代是否真的将所有值存储在内存中?

我曾经这么认为.但是自从我昨天看到Python的详细文档以来,我改变了我的观点.

>>> import sys
>>> def gen(): 
...   n = 0                                                                                          
...   while n < 10:                                                                                 
...     yield n                                                                                     
...     n += 1
...
>>> a = [0,1,2,3,4,5,6,7,8,9]
>>> b = range(10)  # b is a range object, which is a iterable
>>> c = gen(10)    # c is a iterator, which is a iterable too
>>> sys.getsizeof(a)
144
>>> sys.getsizeof(b)
48
>>> sys.getsizeof(c)
72
>>> B = list(b)                                                                                     
>>> C = list(c)                                                                                     
>>> …
Run Code Online (Sandbox Code Playgroud)

python iterable

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

Scrapy 性能改进和内存消耗

服务器

  • 6 GB 内存
  • 4 核英特尔至强 2.60GHz
  • 32 个并发请求
  • CSV 格式的 100 万个 URL
  • 700 Mbit/s 下游
  • 96% 内存消耗

启用调试模式后,抓取会在大约 400 000 个 URL 后停止,很可能是因为服务器内存不足。如果没有调试模式,最多需要 5 天,在我看来,这相当慢,而且会占用大量内存 (96%)

非常欢迎任何提示:)

import scrapy
import csv

def get_urls_from_csv():
    with open('data.csv', newline='') as csv_file:
        data = csv.reader(csv_file, delimiter=',')
        scrapurls = []
        for row in data:
            scrapurls.append("http://"+row[2])
        return scrapurls

class rssitem(scrapy.Item):
    sourceurl = scrapy.Field()
    rssurl = scrapy.Field()


class RssparserSpider(scrapy.Spider):
    name = "rssspider"
    allowed_domains = ["*"]
    start_urls = ()

    def start_requests(self):
        return [scrapy.http.Request(url=start_url) for start_url in …
Run Code Online (Sandbox Code Playgroud)

python scrapy

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

发电机功能如何在内部工作?

下面是一个发电机功能.

def f():
   x=1
   while 1:
      y = yield x
      x += y
Run Code Online (Sandbox Code Playgroud)

这个生成器function(f)是否在内部实现,如下所示?

class f(collections.Iterable):
   def __init__(self):
      self.x = 1
   def __iter__(self):
      return iter(self)
   def __next__(self):
      return self.x
   def send(self, y):
      self.x += y
      return self.next()
Run Code Online (Sandbox Code Playgroud)

编辑:

是我的问题的答案.

python generator

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

返回只能在一段代码中使用一次?

我正在学习python,我无法围绕书中的一段代码:

def find_value(List, value):

    for i in range(len(List)):
        if List[i] == value:
            return i

    return -1
Run Code Online (Sandbox Code Playgroud)

我已经尝试运行代码,如果值在其中则返回索引,如果不是则返回-1,但我不明白是因为'return -1'在for循环之外和if语句,每次执行代码时都不应该运行吗?或者只返回一次,第一次被调用?

我想在继续之前确保理解这个概念.提前致谢

python return

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

将列表中的每个元素转换为键值对

我有两个清单

list1 = [1,a,2,b,3,c]
list2 = [5,d,6,e,7,f]
Run Code Online (Sandbox Code Playgroud)

我试着用 list(zip(list1, list2))

那就是我得到的:

[(1, 5), ('a', 'd'), (2, 6), ('b', 'e'), (3, 7), ('c', 'f')]
Run Code Online (Sandbox Code Playgroud)

我希望这样的东西成为我的输出:

{1:a, 5:d, 2:b, 6:e, 3:c,7:f}
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

python python-3.x

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