Найти - Пользователи
Полная версия: Динамическое создание массивов
Начало » Python для новичков » Динамическое создание массивов
1 2 3
Dimazzzzzz
Собственно суть такова: моя программа извлекает определенной число из определенного url, выводит его мне, потом берет след. url, извлекает оттуда число и т.д. В итоге получается такой своеобразный список чисел, с которыми непонятно что делать. Хотелось бы чтобы после прохода по циклу она добавляла число в массив, чтобы массив к концу выполнения программы состоял из большого набора чисел(одномерный хотя-бы научиться). Вот сам код:
import  urllib
for J in xrange(803311230,803351000):
 url='http://www.vezetmne.ru/auctions/'+str(J)
 urllib.urlretrieve(url=url, filename='COD.html')
 infile = open('COD.html')
 lines = infile.readlines()
 for i in range(len(lines)):
    line = lines[i]# так короче
    if 'cbid=alterStep' in line:
       A = lines[i].strip()
       Raznost = A[24:28]
       .........(много других вычислений)
       print Raznost
    infile.close()
Массив хотелось бы для переменной Raznost. У меня получается создавать массив, который после каждого прохода по циклу меняется, поскольку меняется и сама переменная Raznost, а вот чтобы он не удалял не получается. Если нужно - могу весь код кинуть( но я думаю это только захламит страницу)
Помогите пожалуйста Буду очень благодарен!)
Ed
Не совсем понял чего вы хотите. Может этого?:
import  urllib
import contextlib

for i in xrange(803311230, 803351000):
url='http://www.vezetmne.ru/auctions/'+str(i)
rasnost = []
with contextlib.closing(urllib.urlopen(ulr)) as inp:
for line in inp:
if 'cbid=alterStep' in line:
rasnost.append(line.strip()[24:28])
.........(много других вычислений)
print raznost
fata1ex
Почитайте учебник что ли. Или туториал.
>>> from time import time, sleep
>>> timelist = []
>>> for _ in xrange(10):
...     timelist.append(time())
...     sleep(1)
...     
>>> timelist
[1339051363.754317, 1339051364.755389, 1339051365.756446, 1339051366.757503, 133
9051367.758563, 1339051368.759625, 1339051369.76044, 1339051370.761374, 13390513
71.762433, 1339051372.762765]
>>> timelist = [time() for _ in xrange(10)]
>>> timelist
[1339051471.765869, 1339051471.765871, 1339051471.765872, 1339051471.765873, 133
9051471.765874, 1339051471.765876, 1339051471.765877, 1339051471.765878, 1339051
471.765879, 1339051471.76588]
Dimazzzzzz
Ed
Не совсем понял чего вы хотите. Может этого?:
import  urllib
import contextlib

for i in xrange(803311230, 803351000):
url='http://www.vezetmne.ru/auctions/'+str(i)
rasnost = []
with contextlib.closing(urllib.urlopen(ulr)) as inp:
for line in inp:
if 'cbid=alterStep' in line:
rasnost.append(line.strip()[24:28])
.........(много других вычислений)
print raznost
Попробую объяснить немного конкретнее. Мне нужно получить один массив, в котором были бы все найденные rasnost. Например чтобы он выводил:
>>> a
array([ 0.25,  0.25,  0.25,  0.05,  0.5])
Мне это нужно, поскольку потом прийдется работать с большим количеством графиков по найденным данным, которые удобнее всего на мой взгляд строить используя одинаковые массивы
Ваш пример выводит несколько массивов, из которых в памяти сохраняется только последний. Вот опять-же пример работы программы:
['0.25']
['0.05']
['0.25']
['0.25']
FishHook
Давай пример без urllib, а то непонятно что у тебя на входе, что на выходе.
Дай какие-то данные и скажи что нужно получить
Dimazzzzzz
FishHook
Давай пример без urllib, а то непонятно что у тебя на входе, что на выходе.
Дай какие-то данные и скажи что нужно получить
Вот смотри: моя программа анализирует аукционы: заходит на определенный лот, берет число, потом заходит на след. лот, берет еще одно число и т.д. Мне нужно чтобы эти числа сохранились в итоге в одном массиве.
Без url у меня все получается как-раз, я вот тестовую программу писал на создание массива, вот она работает нормально и выдает все, что нужно:
import urllib
import contextlib
R = []
for i in xrange(10):
    A = "TYUIGIH" + str(i)
    R.append(A)
R
Тоесть впринципе как это делать я понимаю, но когда начинаю вносить в свою программу - получается либо массивы, состоящие из 1-го элемента, либо только последний элемент….
FishHook
Dimazzzzzz
FishHook
Давай пример без urllib, а то непонятно что у тебя на входе, что на выходе.
Дай какие-то данные и скажи что нужно получить
Вот смотри: моя программа анализирует аукционы: заходит на определенный лот, берет число, потом заходит на след. лот, берет еще одно число и т.д. Мне нужно чтобы эти числа сохранились в итоге в одном массиве.
Без url у меня все получается как-раз, я вот тестовую программу писал на создание массива, вот она работает нормально и выдает все, что нужно:
import urllib
import contextlib
R = []
for i in xrange(10):
    A = "TYUIGIH" + str(i)
    R.append(A)
R
Тоесть впринципе как это делать я понимаю, но когда начинаю вносить в свою программу - получается либо массивы, состоящие из 1-го элемента, либо только последний элемент….

А в каком месте ты добавляешь значения в список (массив), я так и не понял
Здесь, что ли?
Raznost = A
Если здесь, то ты на каждой иттерации изменяешь Raznost, а не добавляешь значения.

По-моему надо как-то так
Raznost=[]
 for line in infile.readlines():
       if 'cbid=alterStep' in line:
           A = lines[i].strip()
           Raznost + = A[24:28]
Dimazzzzzz
Сори, я не приложил новый код, добавляю либо вот так:
for J in xrange(803311230,803351000):
 url='http://www.vezetmne.ru/auctions/'+str(J)
 urllib.urlretrieve(url=url, filename='COD.html')
 infile = open('COD.html')
 lines = infile.readlines()
 for i in range(len(lines)):
    line = lines[i]# так короче
    R = []
    if 'cbid=alterStep' in line:
       A = lines[i].strip()
       Raznost = A[24:28]
       R.append(Raznost)
       print R

Либо вот так:
for i in xrange(803311230, 803311630):
    url='http://www.vezetmne.ru/auctions/'+str(i)
    rasnost = []
    with contextlib.closing(urllib.urlopen(url)) as inp:
        for line in inp:
            if 'cbid=alterStep' in line:
                rasnost.append(line.strip()[24:28])
                print rasnost
Итог получается вот такой:
['0.25']
['0.05']
['0.25']
['0.25']
А хотелось бы:
array([ 0.25,  0.05,  0.25,  0.25])
У меня более 1000 таких данных(ясен пень не 4 ), руками не смогу в один массив перегнать
Cryo
Dimazzzzzz
У меня более 1000 таких данных(ясен пень не 4 ), руками не смогу в один массив перегнать
Так зачем на каждой итерации выводить массив? Вынесите print вне цикла
Dimazzzzzz
если вывести print вне цикла, то в массив он внесет только последнее значение переменной(уже пробовал)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB