Это мой код:
domains = ['google.com', 'yahoo.co', 'bing.msn', 'biz.info', 'you.biz', 'test.store', 'myblog.blog', 'finally.xyz']
extensions = ['.blog', '.co', '.com', '.store', '.xyz']
tmp = []
for d in domains:
for e in extensions:
if d.endswith(e) and d not in tmp:
tmp.append(d)
domains.remove(d)
Наконец, я собираюсь удалить доменные имена, имеющие расширение, из списка расширений и оставить другие домены, у которых нет этих расширений.
Ожидаемый результат:
domains = ['bing.msn', 'biz.info', 'you.biz']
Я тоже пробовал эти коды для отладки и добавления печати, чтобы посмотреть, смогу ли я понять, что не так, но не смог:
< pre class="lang-py Prettyprint-override">domains = ['google.com', 'yahoo.co', 'bing.msn', 'biz.info', 'you.biz', 'test.store', 'myblog.blog', 'finally.xyz']
extensions = ['.blog', '.co', '.com', '.store', '.xyz']
for d in domains:
for e in extensions:
if d.endswith(e):
domains.remove(d)
Выход:
>>> domains
['yahoo.co', 'bing.msn', 'biz.info', 'you.biz', 'myblog.blog']
Еще одна попытка:
domains = ['google.com', 'yahoo.co', 'bing.msn', 'biz.info', 'you.biz', 'test.store', 'myblog.blog', 'finally.xyz']
extensions = ['.blog', '.co', '.com', '.store', '.xyz']
tmp = []
for d in domains:
for e in extensions:
if not d.endswith(e) and d not in tmp:
tmp.append(d)
domains.remove(d)
Выход:
>>> domains
['yahoo.co', 'biz.info', 'test.store', 'finally.xyz']
Я не уверен, что не так с моим кодом.
Причина, по которой я использую список tmp, заключается в этой ошибке:
>>> domains = ['google.com', 'yahoo.co', 'bing.msn', 'biz.info', 'you.biz', 'test.store', 'myblog.blog', 'finally.xyz']
>>> extensions = ['.blog', '.co', '.com', '.store', '.xyz']
>>>
>>> for d in domains:
... for e in extensions:
... if not d.endswith(e):
... domains.remove(d)
...
Traceback (most recent call last):
File "", line 4, in
ValueError: list.remove(x): x not in list
Подробнее здесь: https://stackoverflow.com/questions/781 ... -from-list