Добавление строки перед строкой для каждого элемента в списке в Python - PullRequest
8 голосов
/ 25 января 2010

У меня есть список веб-сайтов в строке, и я делал цикл for, чтобы добавить «http» впереди, если первый индекс не «h», но когда я его возвращаю, список не изменился.

n - мой список сайтов ч "http"

for p in n:
    if p[0]!="h":
        p= h+ p
    else:
        continue
return n

когда я возвращаю список, он возвращает мой первоначальный список без добавления "http". Кто-нибудь может мне помочь?

Ответы [ 4 ]

15 голосов
/ 25 января 2010

Это также может быть сделано с использованием понимания списка:

n = [i if i.startswith('h') else 'http' + i for i in n]
3 голосов
/ 25 января 2010

Вам необходимо переназначить элемент списка - строки являются неизменяемыми, поэтому += создает новую строку, не изменяя старую. I.e.:

for i, p in enumerate(n):
  if not p.startswith('h'):
    n[i] = 'http' + p
0 голосов
/ 25 января 2010
>>> n=["abcd","http","xyz"]

>>> n=[x[:1]=='h' and x or 'http'+x for x in n]

>>> n
['httpabcd', 'http', 'httpxyz']
0 голосов
/ 25 января 2010
n = [{True: '', False: 'http'}[p.startswith('h')] + p for p in n]

На самом деле не делай этого. Хотя работает .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...