在Python中为列表中的每个项添加字符串前缀

8 投票
4 回答
15426 浏览
提问于 2025-04-15 18:25

我有一个包含网站的字符串列表,我在用一个循环来检查每个网站,如果它的开头不是"h",就想在前面加上"http"。可是当我返回这个列表的时候,发现列表没有变化。

这里的n是我的网站列表,h是"http"

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

当我返回这个列表时,它还是我最开始的那个列表,没有加上"http"。有人能帮我吗?

4 个回答

0
n = [{True: '', False: 'http'}[p.startswith('h')] + p for p in n]

其实不要这样做。虽然这样做确实能奏效。

3

你需要重新分配这个列表的项目——字符串是不可变的,所以用 += 其实是在创建一个新的字符串,而不是修改旧的那个。也就是说:

for i, p in enumerate(n):
  if not p.startswith('h'):
    n[i] = 'http' + p
15

这也可以通过列表推导式来实现:

n = [i if i.startswith('h') else 'http' + i for i in n]

撰写回答