Ниже приведен список идентификаторов и список количества URL-адресов, создаваемых для каждого идентификатора, с использованием url_str
в качестве базы созданных URL-адресов. Итак, для id id2
, я бы ожидал три URL-адреса. Я выполнил это с помощью list comprehension
, который, по-видимому, является самым питоническим способом решения проблемы.Карта эквивалента вложенного списка с использованием zip
Тем не менее, я изучаю python в данный момент, и мне интересно узнать об map
, эквивалентном пониманию списка.
url_str = "www.amazon.com/gp/cdp/member-reviews/"
ids = ['id' + str(x) for x in xrange(1, 5)]
revs = [1, 3, 1, 8]
# ids output
['id1', 'id2', 'id3', 'id4']
# list comprehension
urls_compr = [url_str + id_r + "page=" + str(x)
for id_r, page in zip(ids, revs)
for x in xrange(1, page + 1)]
# output of list comprehension
['www.amazon.com/gp/cdp/member-reviews/id1page=1',
'www.amazon.com/gp/cdp/member-reviews/id2page=1',
'www.amazon.com/gp/cdp/member-reviews/id2page=2',
'www.amazon.com/gp/cdp/member-reviews/id2page=3',
'www.amazon.com/gp/cdp/member-reviews/id3page=1',
'www.amazon.com/gp/cdp/member-reviews/id4page=1',
'www.amazon.com/gp/cdp/member-reviews/id4page=2',
'www.amazon.com/gp/cdp/member-reviews/id4page=3',
'www.amazon.com/gp/cdp/member-reviews/id4page=4',
'www.amazon.com/gp/cdp/member-reviews/id4page=5',
'www.amazon.com/gp/cdp/member-reviews/id4page=6',
'www.amazon.com/gp/cdp/member-reviews/id4page=7',
'www.amazon.com/gp/cdp/member-reviews/id4page=8']
В идеале, я бы что-то эффект:
urls_map = map(func, ids, revs)
urls_map
['www.amazon.com/gp/cdp/member-reviews/id1page=1',
'www.amazon.com/gp/cdp/member-reviews/id2page=1',
'www.amazon.com/gp/cdp/member-reviews/id2page=2',
'www.amazon.com/gp/cdp/member-reviews/id2page=3',
'www.amazon.com/gp/cdp/member-reviews/id3page=1',
'www.amazon.com/gp/cdp/member-reviews/id4page=1',
'www.amazon.com/gp/cdp/member-reviews/id4page=2',
'www.amazon.com/gp/cdp/member-reviews/id4page=3',
'www.amazon.com/gp/cdp/member-reviews/id4page=4',
'www.amazon.com/gp/cdp/member-reviews/id4page=5',
'www.amazon.com/gp/cdp/member-reviews/id4page=6',
'www.amazon.com/gp/cdp/member-reviews/id4page=7',
'www.amazon.com/gp/cdp/member-reviews/id4page=8']
Я просто не уверен в func
части.
Теги на этом в замешательстве. Вы говорите, что у вас есть рабочий список comp, который вы опубликовали, и вы хотите переписать его с помощью карты, чтобы получить тот же результат, что и у вас уже есть? (Почему?) –
Я обменивал теги. У меня есть рабочий список comp, но я хочу переписать с помощью карты. Почему? Потому что я новичок в этом языке, и мне любопытно, нет другой причины. –
карта действительно не имеет смысла здесь, она работает только хорошо, когда операция над каждым элементом является вызываемой, например, с использованием 'map (str, seq)' будет равнозначной '[str (x) для x в seq] 'в python 2 или' (str (x) для x в seq) 'в python 3 (list comp vs generator comp), но когда операция типа' url_str + id_r + "page =" + str (x) ', вы бы для реализации этого как функции/лямбда и ... нет, это не правильный инструмент для этой работы. –