Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中为列表中的每个项在字符串前面添加字符串_Python_String_Loops_For Loop - Fatal编程技术网

在python中为列表中的每个项在字符串前面添加字符串

在python中为列表中的每个项在字符串前面添加字符串,python,string,loops,for-loop,Python,String,Loops,For Loop,我有一个字符串中的网站列表,我正在做一个for循环,如果第一个索引不是“h”,那么在前面添加“http”,但是当我返回它时,列表没有改变 n是我的网站列表 h是“http” 当我返回列表时,它返回我的原始列表,并且没有附加“http”。有人能帮我吗?您需要重新分配列表项--字符串是不可变的,因此+=正在生成一个新字符串,而不是对旧字符串进行变异。即: for i, p in enumerate(n): if not p.startswith('h'): n[i] = 'http' +

我有一个字符串中的网站列表,我正在做一个for循环,如果第一个索引不是“h”,那么在前面添加“http”,但是当我返回它时,列表没有改变

n是我的网站列表 h是“http”


当我返回列表时,它返回我的原始列表,并且没有附加“http”。有人能帮我吗?

您需要重新分配列表项--字符串是不可变的,因此
+=
正在生成一个新字符串,而不是对旧字符串进行变异。即:

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

这也可以通过列表理解来实现:

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

不要真的这样做。尽管它确实可以工作。

可能是因为这是一种有趣的黑客方式。仅供参考:Python现在有if-else表达式,因此不再需要使用dict/sequence/and/or来模拟它们。劳伦斯:与C三元运算符相比,它们的“错误顺序”使我避免使用它们,因为我不需要来自其他语言的没有经验的Python程序员被它们绊倒。但这并不是使用dict的理由……对于空字符串将失败。但希望不会太多。你试过了吗?:-)
[:1]
被用来代替
[0]
。不,我以为我看到了逻辑上的问题,但在这个特殊情况下我错了。如果条件是
x[:1]!='“H′/代码>然后它就失败了。是的:这就是<代码>和/或代码>如何工作,如你所知,我故意使用<代码>=''/'>这个例子,以避免<代码> '/c> > <代码>和部分可以考虑检查第一个字符,如果你的列表中有“H”开头的网站,而不是http。
n = [i if i.startswith('h') else 'http' + i for i in n]
n = [{True: '', False: 'http'}[p.startswith('h')] + p for p in n]
>>> n=["abcd","http","xyz"]

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

>>> n
['httpabcd', 'http', 'httpxyz']