category_urls = [
"https://thepiratebay.org/browse/100/0/3",
"https://thepiratebay.org/browse/200/0/3",
"https://thepiratebay.org/browse/300/0/3",
"https://thepiratebay.org/browse/400/0/3",
"https://thepiratebay.org/browse/500/0/3",
"https://thepiratebay.org/browse/600/0/3"
]
result =
category_urls
|> Enum.map(fn category_url ->
1..50
|> Enum.map(fn i -> String.replace(category_url, "/0/", "/#{i}/") end)
end)
我正在尝试生成一个我需要抓取的网址。
上面的代码为我生成了一个字符串映射图。我想把它压平成一个简单的字符串图。
我如何在Elixir中实现这一目标?
答案 0 :(得分:2)
使用Enum.flat_map/2
。
category_urls = [
"https://thepiratebay.org/browse/100/0/3",
"https://thepiratebay.org/browse/200/0/3",
"https://thepiratebay.org/browse/300/0/3",
"https://thepiratebay.org/browse/400/0/3",
"https://thepiratebay.org/browse/500/0/3",
"https://thepiratebay.org/browse/600/0/3"
]
result =
category_urls
|> Enum.flat_map(fn category_url ->
1..50
|> Enum.map(fn i -> String.replace(category_url, "/0/", "/#{i}/") end)
end)
end
但是,使用comprehension
可以使代码更简单。
for i <- 1..6, j <- 1..50, do: "https://thepiratebay.org/browse/#{i}00/#{j}/3"