在 python 中使用 for 循环连接字符串以列出项目
Concatinating strings to list items using for loops in python
我是 python3 的新手,最近我一直在练习列表和函数。
在这里,我将字符串存储在一个列表中,然后将该列表传递给一个应该 concatenate/add 字符串的函数,如下所示:
def hello(names):
for name in names:
name = "Hello "+name+"!"
return names
liiist = ["L Lawliet", "Nate River", "Mihael Keehl"]
liiist = hello(liiist)
print(liiist)
但不是得到
['Hello L Lawliet!', 'Hello Nate River!', 'Hello Mihael Keehl!']
,我只是得到 ['L Lawliet', 'Nate River', 'Mihael Keehl']
什么都没发生。此外,PyCharm 提醒我 Local variable 'name' value is not used
我也试验过这个问题,结果在函数之外也不起作用:
vars = ["trying", "to", "rewrite", "lists"]
for var in vars:
var = var + " hello"
print(vars)
输出:['trying', 'to', 'rewrite', 'lists']
我已经找到了解决这个问题的方法,但我很不高兴我只是通过 chance/massive 大量的反复试验找到了解决方案。 我想我不明白为什么 python 产生这样的结果可能会影响我以后的职业生涯。 有人可以解释为什么会这样吗?
此外,如果您好奇,这是我找到的解决方法:
def hello(names):
counter = 0
for name in names:
name = name + " the Great"
names[counter] = names
counter += 1
return names
names = ["L Lawliet", "Nate River", "Mihael Keehl"]
names = hello(names)
print(names)
给我一个比上面的代码更有效的代码也可以帮助:)
你的函数
def hello(names):
for name in names:
name = "Hello "+name+"!"
return names
什么都不做,因为 Python 中的字符串是不可变的。一种解决方案是 return 包含新创建的字符串的新列表,例如:
def hello(names):
rv = []
for name in names:
rv.append("Hello "+name+"!")
return rv
liiist = ["L Lawliet", "Nate River", "Mihael Keehl"]
liiist = hello(liiist)
print(liiist)
打印:
['Hello L Lawliet!', 'Hello Nate River!', 'Hello Mihael Keehl!']
或者您可以更改列表 in-place(但在这种情况下,您的函数不会 return 任何内容):
def hello(names):
for i, name in enumerate(names):
names[i] = "Hello "+name+"!"
liiist = ["L Lawliet", "Nate River", "Mihael Keehl"]
hello(liiist)
print(liiist)
打印:
['Hello L Lawliet!', 'Hello Nate River!', 'Hello Mihael Keehl!']
获得上述输出的一种方法是按照@Andrej Kesely 提到的附加到列表。另一种方法是使用 'yield' 生成器输出序列。参考下面的代码。
def hello(names):
for name in names:
name = "Hello "+name+"!"
yield name # generator that outputs sequence. Yield should be inside loop
liiist = ["L Lawliet", "Nate River", "Mihael Keehl"]
liiist = list(hello(liiist)) # store the yield output in a list when calling the function
print(liiist)
参考下面的输出截图
我是 python3 的新手,最近我一直在练习列表和函数。
在这里,我将字符串存储在一个列表中,然后将该列表传递给一个应该 concatenate/add 字符串的函数,如下所示:
def hello(names):
for name in names:
name = "Hello "+name+"!"
return names
liiist = ["L Lawliet", "Nate River", "Mihael Keehl"]
liiist = hello(liiist)
print(liiist)
但不是得到
['Hello L Lawliet!', 'Hello Nate River!', 'Hello Mihael Keehl!']
,我只是得到 ['L Lawliet', 'Nate River', 'Mihael Keehl']
什么都没发生。此外,PyCharm 提醒我 Local variable 'name' value is not used
我也试验过这个问题,结果在函数之外也不起作用:
vars = ["trying", "to", "rewrite", "lists"]
for var in vars:
var = var + " hello"
print(vars)
输出:['trying', 'to', 'rewrite', 'lists']
我已经找到了解决这个问题的方法,但我很不高兴我只是通过 chance/massive 大量的反复试验找到了解决方案。 我想我不明白为什么 python 产生这样的结果可能会影响我以后的职业生涯。 有人可以解释为什么会这样吗?
此外,如果您好奇,这是我找到的解决方法:
def hello(names):
counter = 0
for name in names:
name = name + " the Great"
names[counter] = names
counter += 1
return names
names = ["L Lawliet", "Nate River", "Mihael Keehl"]
names = hello(names)
print(names)
给我一个比上面的代码更有效的代码也可以帮助:)
你的函数
def hello(names):
for name in names:
name = "Hello "+name+"!"
return names
什么都不做,因为 Python 中的字符串是不可变的。一种解决方案是 return 包含新创建的字符串的新列表,例如:
def hello(names):
rv = []
for name in names:
rv.append("Hello "+name+"!")
return rv
liiist = ["L Lawliet", "Nate River", "Mihael Keehl"]
liiist = hello(liiist)
print(liiist)
打印:
['Hello L Lawliet!', 'Hello Nate River!', 'Hello Mihael Keehl!']
或者您可以更改列表 in-place(但在这种情况下,您的函数不会 return 任何内容):
def hello(names):
for i, name in enumerate(names):
names[i] = "Hello "+name+"!"
liiist = ["L Lawliet", "Nate River", "Mihael Keehl"]
hello(liiist)
print(liiist)
打印:
['Hello L Lawliet!', 'Hello Nate River!', 'Hello Mihael Keehl!']
获得上述输出的一种方法是按照@Andrej Kesely 提到的附加到列表。另一种方法是使用 'yield' 生成器输出序列。参考下面的代码。
def hello(names):
for name in names:
name = "Hello "+name+"!"
yield name # generator that outputs sequence. Yield should be inside loop
liiist = ["L Lawliet", "Nate River", "Mihael Keehl"]
liiist = list(hello(liiist)) # store the yield output in a list when calling the function
print(liiist)
参考下面的输出截图