以https开头的url列表,并返回含有以https和http开头的url的输出列表

2024-05-29 03:42:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有数据

data = ​set(['https://a.com/', 'https://b.com'])

我希望输出像

​set(['https://a.com/', 'https://b.com', 'http://a.com/', 'http://b.com'])

我只想用httphttps附加相同的url。
注意:我想用最小行(需要是1行)来完成此操作。 我试过了

>>>out = set([i.replace('https', 'http') for i in m] + [i for i in m])
>>>set(['https://abccakes.dbmonline.net/grappelli/bookmark/get/?path=/admin/', 'https://abccakes.dbmonline.net/admin/', 'http://abccakes.dbmonline.net/grappelli/bookmark/get/?path=/admin/', 'http://abccakes.dbmonline.net/admin/'])

它工作正常,但我不想使用替换。我想用http替换https作为列表元素。你知道吗


Tags: 数据pathinhttpscomhttpforget
2条回答

如果您想在这里找到更快的解决方案,那么最好使用set.unionset.update来更新原始集本身。你知道吗

In [16]: data = set('https://{}.com'.format(''.join(random.choice(letters) for _ in range(10))) f
or _ in xrange(10**5))                                                                           

In [17]: %timeit set([i.replace('https', 'http', 1) for i in data] + [i for i in data])          
10 loops, best of 3: 252 ms per loop

In [18]: %timeit data.union(x.replace('https', 'http', 1) for x in data)                         
1 loops, best of 3: 176 ms per loop

In [19]: %timeit from itertools import chain; set(chain.from_iterable([x, x.replace('https', 'htt
p', 1)] for x in data))                                                                          
10 loops, best of 3: 190 ms per loop    
out = set([re.sub(r'^https:', 'http:', i) for i in m] + [i for i in m])

相关问题 更多 >

    热门问题