Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 3, 2009 22:05:57

Malinaizer
От:
Зарегистрирован: 2009-03-28
Сообщения: 133
Репутация: +  0  -
Профиль   Отправить e-mail  

туплю помогите

def x(a, b):
for c in b:
yield a(*c)

как к ней обратиться?



Офлайн

#2 Ноя. 3, 2009 22:41:25

lightcaster
От:
Зарегистрирован: 2008-07-01
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

туплю помогите

Типичный способ:

for item in x(a, b):
#do something
Либо напрямую:
gen = x(a, b)
item = gen.next()
ps аргумент ‘a’ - это функция?



Офлайн

#3 Ноя. 3, 2009 22:56:53

Malinaizer
От:
Зарегистрирован: 2009-03-28
Сообщения: 133
Репутация: +  0  -
Профиль   Отправить e-mail  

туплю помогите

спасибо! я знаю что это функция “*-это apply синтаксис”, только мне не понятно что она должна принять в виде аргумента?



Отредактировано (Ноя. 3, 2009 22:57:20)

Офлайн

#4 Ноя. 3, 2009 23:08:51

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

туплю помогите

Насколько я понял, b должен быть как минимум двумерным списком.
То есть применяется примерно так:

def a(*c):
return c

def x(a, b):
for c in b:
yield a(*c)

for i in x(a, ["qwe", "rty", "uio"]):
print i



Отредактировано (Ноя. 3, 2009 23:10:24)

Офлайн

#5 Ноя. 3, 2009 23:41:26

Malinaizer
От:
Зарегистрирован: 2009-03-28
Сообщения: 133
Репутация: +  0  -
Профиль   Отправить e-mail  

туплю помогите

pasaranax
Насколько я понял, b должен быть как минимум двумерным списком.
То есть применяется примерно так:
def a(*c):
return c

def x(a, b):
for c in b:
yield a(*c)

for i in x(a, ["qwe", "rty", "uio"]):
print i
все понял она может принять в первом аргументе встроенную функцию zip я так и делал просто во втором аргументе ошибался! а где здесь понять что b должен быть списком?



Офлайн

#6 Ноя. 4, 2009 01:31:11

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

туплю помогите

Malinaizer
а где здесь понять что b должен быть списком?
for c in b:  # следовательно b - итерируемый объект
yield a(*c) # a может принимать список или кортеж параметров (в данном случае только это и может), следовательно c, элемент b, тоже итерируемый
Значит b - двумерный список, список строк или что-то подобное. А ты что ему скармливал в качестве b?



Отредактировано (Ноя. 4, 2009 01:34:43)

Офлайн

#7 Ноя. 4, 2009 09:33:11

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

туплю помогите

Malinaizer
а где здесь понять что b должен быть списком?
тут: for c in b:
“б” перебераем как список

Офлайн

#8 Ноя. 4, 2009 09:34:51

Malinaizer
От:
Зарегистрирован: 2009-03-28
Сообщения: 133
Репутация: +  0  -
Профиль   Отправить e-mail  

туплю помогите

pasaranax
Malinaizer
а где здесь понять что b должен быть списком?
for c in b:  # следовательно b - итерируемый объект
yield a(*c) # a может принимать список или кортеж параметров (в данном случае только это и может), следовательно c, элемент b, тоже итерируемый
Значит b - двумерный список, список строк или что-то подобное. А ты что ему скармливал в качестве b?
кортеж чисел)))



Офлайн

#9 Ноя. 4, 2009 10:28:34

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

туплю помогите

У меня исключение вылезает, если вот так делать:

for i in x(a, (1, 2, 3)):
print i



Офлайн

#10 Ноя. 4, 2009 12:44:44

Malinaizer
От:
Зарегистрирован: 2009-03-28
Сообщения: 133
Репутация: +  0  -
Профиль   Отправить e-mail  

туплю помогите

pasaranax
У меня исключение вылезает, если вот так делать:
for i in x(a, (1, 2, 3)):
print i
так и у меня тоже исключение, вот я и думала что туплю)))



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version