Форум сайта python.su
0
EdЕсть ли в этом списке 1,2,3 и т.д.))) код сокращается вот так:
Не торопитесь, все будет. Проанализируете. Там же тоже самое внутри, что и в ваших многочисленных переменных.
Так, следующее задание.
посмотреть на это:И понять что же вы таким образом проверяете и как это можно записать короче. подсказка - у вас есть список ty с пятью числами. Вы проверяете есть ли в этом списке …1 if ty[0] == 1 or ty[1] == 1 or ty[2] == 1 or ty[3] == 1 or ty[4] == 1 else 0
#-*- coding: cp1251 -*- """ Created on Tue Jun 05 19:35:11 2012 @author: Dimazzzzzz """#/usr/bin/python import urllib import numpy as np rasnost = [] Data =[] Blitz1 = [] Stavka2 = [] Igrok2 = [] Typs = [[]] * 10 for J in xrange(803311466, 803311500): url='http://www.vezetmne.ru/auctions/'+str(J) urllib.urlretrieve(url=url, filename='COD.html') infile = open('COD.html') lines = infile.readlines() print J for i in range(len(lines)): line = lines[i]# так короче if 'cbid=alterStep' in line: rasnost.append(np.float(line.strip()[24:28])) if 'item_bigcell' in line: type1 = lines[i+1].strip()[10:40] type2 = lines[i+2].strip()[10:40] type3 = lines[i+3].strip()[10:40] type4 = lines[i+4].strip()[10:40] type5 = lines[i+5].strip()[10:40] if 'Аукцион завершен' in line: Data.append(line.strip()[-28:-19]) if 'Блиц-цена' in line: Origin = line.strip()[91:97] if '.' in Origin: Orig = Origin[0:5] else: Orig = Origin if '.' in Orig: AA = Orig[0:4] else: AA = Orig if '.' in AA: BB = AA[0:3] else: BB = AA if '.' in BB: Blitz1.append(np.int(BB[0:2])) else: Blitz1.append(np.int(BB)) if '<div class="history" id="history">' in line: Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30]) Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')])) Igrok1 = lines[i+3].strip()[21:-24] # А вот для ника возьмем с минусом Igrok2.append(Igrok1[Stavka1.find('р')+26:]) types = [type1, type2, type3, type4, type5] ty = [] for q in range(len(types)): if 'Участ' in types[q]: ty.append(1) # Не требует свободных лотов (+) elif 'Кажд' in types[q]: ty.append(2) # Ограниченное количество ставок (+) elif 'Лог' in types[q]: ty.append(3) #'Логины зашифрованы'(+) elif 'Днев' in types[q]: ty.append(4) #'Дневной'(+) elif 'Один' in types[q]: ty.append(5) #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in types[q]: ty.append(6) #' Для новичков' (+) elif 'Ставк' in types[q]: ty.append(7) #'На понижение' elif 'Фикс' in types[q]: ty.append(8) #'Фиксированная цена' elif '100' in types[q]: ty.append(9) #'100% скидка' elif 'Бесп' in types[q]: ty.append(10) #'Бесплатные ставки' else: ty.append(0) Typs[0].append(1 if 1 in ty else 0) Typs[1].append(1 if 2 in ty else 0) Typs[2].append(1 if 3 in ty else 0) Typs[3].append(1 if 4 in ty else 0) Typs[4].append(1 if 5 in ty else 0) Typs[5].append(1 if 6 in ty else 0) Typs[6].append(1 if 7 in ty else 0) Typs[7].append(1 if 8 in ty else 0) Typs[8].append(1 if 9 in ty else 0) Typs[9].append(1 if 10 in ty else 0) print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2, '\n', Data W = np.array(rasnost) Blitz = np.array(Blitz1) Stavka = np.array(Stavka2) Mtyp1 = np.array(Typs)
Офлайн
13
Отлично. Можете еще сократить так:
Typs[0].append(int(1 in ty))
Отредактировано Ed (Июнь 9, 2012 23:16:56)
Офлайн
0
EdПочему так сократить можно - понял
Отлично. Можете еще сократить так:Если не поймете почему, то спрашивайте - объясню, но постарайтесь понять самостоятельно.Typs[0].append(int(1 in ty))
Следующее задание:
Заменить заполнение списка Typs циклом из десяти итераций. Мы подобное уже делали, попробуйте на этот раз самостоятельно.
Потомучтно int(True) дает 1, а int(False) дает 0#-*- coding: cp1251 -*- """ Created on Tue Jun 05 19:35:11 2012 @author: Dimazzzzzz """#/usr/bin/python import urllib import numpy as np rasnost = [] Data =[] Blitz1 = [] Stavka2 = [] Igrok2 = [] Typs = [[]] * 10 for J in xrange(803311466, 803311500): url='http://www.vezetmne.ru/auctions/'+str(J) urllib.urlretrieve(url=url, filename='COD.html') infile = open('COD.html') lines = infile.readlines() print J for i in range(len(lines)): line = lines[i]# так короче if 'cbid=alterStep' in line: rasnost.append(np.float(line.strip()[24:28])) if 'item_bigcell' in line: type1 = lines[i+1].strip()[10:40] type2 = lines[i+2].strip()[10:40] type3 = lines[i+3].strip()[10:40] type4 = lines[i+4].strip()[10:40] type5 = lines[i+5].strip()[10:40] if 'Аукцион завершен' in line: Data.append(line.strip()[-28:-19]) if 'Блиц-цена' in line: Origin = line.strip()[91:97] if '.' in Origin: Orig = Origin[0:5] else: Orig = Origin if '.' in Orig: AA = Orig[0:4] else: AA = Orig if '.' in AA: BB = AA[0:3] else: BB = AA if '.' in BB: Blitz1.append(np.int(BB[0:2])) else: Blitz1.append(np.int(BB)) if '<div class="history" id="history">' in line: Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30]) Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')])) Igrok1 = lines[i+3].strip()[21:-24] # А вот для ника возьмем с минусом Igrok2.append(Igrok1[Stavka1.find('р')+26:]) types = [type1, type2, type3, type4, type5] ty = [] for q in range(len(types)): if 'Участ' in types[q]: ty.append(1) # Не требует свободных лотов (+) elif 'Кажд' in types[q]: ty.append(2) # Ограниченное количество ставок (+) elif 'Лог' in types[q]: ty.append(3) #'Логины зашифрованы'(+) elif 'Днев' in types[q]: ty.append(4) #'Дневной'(+) elif 'Один' in types[q]: ty.append(5) #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in types[q]: ty.append(6) #' Для новичков' (+) elif 'Ставк' in types[q]: ty.append(7) #'На понижение' elif 'Фикс' in types[q]: ty.append(8) #'Фиксированная цена' elif '100' in types[q]: ty.append(9) #'100% скидка' elif 'Бесп' in types[q]: ty.append(10) #'Бесплатные ставки' else: ty.append(0) for u in range(len(Typs)): Typs[u].append(int(u in ty)) print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2, '\n', Data W = np.array(rasnost) Blitz = np.array(Blitz1) Stavka = np.array(Stavka2) Mtyp1 = np.array(Typs)

Typs[u].append(int(u in ty))
Отредактировано Dimazzzzzz (Июнь 9, 2012 23:44:50)
Офлайн
13
Видите, как все хорошо складывается. То ли еще будет :)
Следующее задание - заменить использование переменных type1-type5 заполнением списка types.
Офлайн
13
DimazzzzzzДа, совершено верно. Нужно u+1. Откуда тогда верные данные?
Данные вроде верные выводит :)
Я тут подумал пока: там не u+1 писать нужно?
Офлайн
0
EdГотово:
Видите, как все хорошо складывается. То ли еще будет
Следующее задание - заменить использование переменных type1-type5 заполнением списка types.
urllib.urlretrieve(url=url, filename='COD.html') infile = open('COD.html') lines = infile.readlines() print J for i in range(len(lines)): line = lines[i]# так короче if 'cbid=alterStep' in line: rasnost.append(np.float(line.strip()[24:28])) if 'item_bigcell' in line: types = [] types.append(lines[i+1].strip()[10:40]) types.append(lines[i+2].strip()[10:40]) types.append(lines[i+3].strip()[10:40]) types.append(lines[i+4].strip()[10:40]) types.append(lines[i+5].strip()[10:40]) if 'Аукцион завершен' in line: Data.append(line.strip()[-28:-19]) if 'Блиц-цена' in line: Origin = line.strip()[91:97] if '.' in Origin: Orig = Origin[0:5] else: Orig = Origin if '.' in Orig: AA = Orig[0:4] else: AA = Orig if '.' in AA: BB = AA[0:3] else: BB = AA if '.' in BB: Blitz1.append(np.int(BB[0:2])) else: Blitz1.append(np.int(BB)) if '<div class="history" id="history">' in line: Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30]) Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')])) Igrok1 = lines[i+3].strip()[21:-24] # А вот для ника возьмем с минусом Igrok2.append(Igrok1[Stavka1.find('р')+26:]) ty = [] for q in range(len(types)): if 'Участ' in types[q]: ty.append(1) # Не требует свободных лотов (+) elif 'Кажд' in types[q]: ty.append(2) # Ограниченное количество ставок (+) elif 'Лог' in types[q]: ty.append(3) #'Логины зашифрованы'(+) elif 'Днев' in types[q]: ty.append(4) #'Дневной'(+) elif 'Один' in types[q]: ty.append(5) #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in types[q]: ty.append(6) #' Для новичков' (+) elif 'Ставк' in types[q]: ty.append(7) #'На понижение' elif 'Фикс' in types[q]: ty.append(8) #'Фиксированная цена' elif '100' in types[q]: ty.append(9) #'100% скидка' elif 'Бесп' in types[q]: ty.append(10) #'Бесплатные ставки' else: ty.append(0) for u in range(len(Typs)): Typs[u].append(int(u+1 in ty)) print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2, '\n', Data W = np.array(rasnost) Blitz = np.array(Blitz1) Stavka = np.array(Stavka2) Mtyp1 = np.array(Typs)
Отредактировано Dimazzzzzz (Июнь 9, 2012 23:45:54)
Офлайн
13
Ну в общем-то append там не нужен. Вы же пишете
a = [0,1,2,3]
Офлайн
0
EdТогда вот так вроде:
Ну в общем-то append там не нужен. Вы же пишете, вот и здесь так же, только вместо цифр будет то, что вам нужно.a = [0,1,2,3]
#-*- coding: cp1251 -*- """ Created on Tue Jun 05 19:35:11 2012 @author: Dimazzzzzz """#/usr/bin/python import urllib import numpy as np rasnost = [] Data =[] Blitz1 = [] Stavka2 = [] Igrok2 = [] Typs = [[]] * 10 for J in xrange(803311466, 803311500): url='http://www.vezetmne.ru/auctions/'+str(J) urllib.urlretrieve(url=url, filename='COD.html') infile = open('COD.html') lines = infile.readlines() print J for i in range(len(lines)): line = lines[i]# так короче if 'cbid=alterStep' in line: rasnost.append(np.float(line.strip()[24:28])) if 'item_bigcell' in line: types = [lines[i+1].strip()[10:40], lines[i+2].strip()[10:40], lines[i+3].strip()[10:40], lines[i+4].strip()[10:40], lines[i+5].strip()[10:40]] if 'Аукцион завершен' in line: Data.append(line.strip()[-28:-19]) if 'Блиц-цена' in line: Origin = line.strip()[91:97] if '.' in Origin: Orig = Origin[0:5] else: Orig = Origin if '.' in Orig: AA = Orig[0:4] else: AA = Orig if '.' in AA: BB = AA[0:3] else: BB = AA if '.' in BB: Blitz1.append(np.int(BB[0:2])) else: Blitz1.append(np.int(BB)) if '<div class="history" id="history">' in line: Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30]) Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')])) Igrok1 = lines[i+3].strip()[21:-24] # А вот для ника возьмем с минусом Igrok2.append(Igrok1[Stavka1.find('р')+26:]) ty = [] for q in range(len(types)): if 'Участ' in types[q]: ty.append(1) # Не требует свободных лотов (+) elif 'Кажд' in types[q]: ty.append(2) # Ограниченное количество ставок (+) elif 'Лог' in types[q]: ty.append(3) #'Логины зашифрованы'(+) elif 'Днев' in types[q]: ty.append(4) #'Дневной'(+) elif 'Один' in types[q]: ty.append(5) #'С блефом' (+) - Внезапно ОО elif 'Аукцион для' in types[q]: ty.append(6) #' Для новичков' (+) elif 'Ставк' in types[q]: ty.append(7) #'На понижение' elif 'Фикс' in types[q]: ty.append(8) #'Фиксированная цена' elif '100' in types[q]: ty.append(9) #'100% скидка' elif 'Бесп' in types[q]: ty.append(10) #'Бесплатные ставки' else: ty.append(0) for u in range(len(Typs)): Typs[u].append(int(u+1 in ty)) print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2, '\n', Data W = np.array(rasnost) Blitz = np.array(Blitz1) Stavka = np.array(Stavka2) Mtyp1 = np.array(Typs)
Офлайн
13
Хорошо. Теперь нужно сократить цикл заполнения ty. Здесь нам понадобится вот такой вот списочек:
keywords = ['Участ', 'Кажд', 'Лог' ....ну и так далее]
Используя цикл for num, keyword in enumerate(keywords):
Отредактировано Ed (Июнь 10, 2012 00:04:38)
Офлайн
0
EdБлин вот тут уже сложнее, список создал вот такой:
Хорошо. Теперь нужно сократить цикл заполнения ty. Здесь нам понадобится вот такой вот списочек:можно эту задачу решить.keywords = ['Участ', 'Кажд', 'Лог' ....ну и так далее]
Используя цикл for num, keyword in enumerate(keywords):
#-*- coding: cp1251 -*- """ Created on Tue Jun 05 19:35:11 2012 @author: Dimazzzzzz """#/usr/bin/python import urllib import numpy as np rasnost = [] Data =[] Blitz1 = [] Stavka2 = [] Igrok2 = [] Typs = [[]] * 10 for J in xrange(803311466, 803311500): url='http://www.vezetmne.ru/auctions/'+str(J) urllib.urlretrieve(url=url, filename='COD.html') infile = open('COD.html') lines = infile.readlines() print J for i in range(len(lines)): line = lines[i]# так короче if 'cbid=alterStep' in line: rasnost.append(np.float(line.strip()[24:28])) if 'item_bigcell' in line: types = [lines[i+1].strip()[10:40], lines[i+2].strip()[10:40], lines[i+3].strip()[10:40], lines[i+4].strip()[10:40], lines[i+5].strip()[10:40]] if 'Аукцион завершен' in line: Data.append(line.strip()[-28:-19]) if 'Блиц-цена' in line: Origin = line.strip()[91:97] if '.' in Origin: Orig = Origin[0:5] else: Orig = Origin if '.' in Orig: AA = Orig[0:4] else: AA = Orig if '.' in AA: BB = AA[0:3] else: BB = AA if '.' in BB: Blitz1.append(np.int(BB[0:2])) else: Blitz1.append(np.int(BB)) if '<div class="history" id="history">' in line: Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30]) Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')])) Igrok1 = lines[i+3].strip()[21:-24] # А вот для ника возьмем с минусом Igrok2.append(Igrok1[Stavka1.find('р')+26:]) ty = [] keywords = ['Участ', 'Кажд', 'Лог', 'Днев', 'Один', 'Аукцион для', 'Ставок', 'Фикс', '100', 'Бесп'] for q in range(len(types)): for num, keyword in enumerate(keywords): ty.append(num) #if 'Участ' in types[q]: # Не требует свободных лотов (+) #elif 'Кажд' in types[q]: # ty.append(2) # Ограниченное количество ставок (+) #elif 'Лог' in types[q]: # ty.append(3) #'Логины зашифрованы'(+) #elif 'Днев' in types[q]: # ty.append(4) #'Дневной'(+) #elif 'Один' in types[q]: # ty.append(5) #'С блефом' (+) - Внезапно ОО # elif 'Аукцион для' in types[q]: #ty.append(6) #' Для новичков' (+) # elif 'Ставк' in types[q]: # ty.append(7) #'На понижение' # elif 'Фикс' in types[q]: # ty.append(8) #'Фиксированная цена' # elif '100' in types[q]: # ty.append(9) #'100% скидка' #elif 'Бесп' in types[q]: # ty.append(10) #'Бесплатные ставки' # else: # ty.append(0) for u in range(len(Typs)): Typs[u].append(int(u+1 in ty)) print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2, '\n', Data W = np.array(rasnost) Blitz = np.array(Blitz1) Stavka = np.array(Stavka2) Mtyp1 = np.array(Typs)
)))))
Офлайн