我想使用以下函数来改变两个列表的元素: 如果列表元素以“U”开头,则该元素应变为“1”,否则该列表元素应变为“0”。 代码如下:
def measure(p):
for x in range(len(p)):
if p[x][0] == 'U':
p[x] = 1
else:
p[x] = 0
return p
print measure(['Dave','Sebastian','Katy'])
print measure(['Umika','Umberto'])
正确的结果应该是
[0, 0, 0]
[1, 1]
但目前的代码产生:
[0, 'Sebastian', 'Katy']
[1, 'Umberto']
似乎迭代在第一个元素之后停止了。我怎样才能解决这个问题?你知道吗
函数在第一个循环之后终止,因为在该循环中有一个无条件返回。将回路移到回路外侧。你知道吗
结果:
要知道
return
在执行函数时总是终止函数。在for
循环的第一个循环中,函数执行return
语句并结束函数measure
。这就是为什么只有p
的第一个元素被更改为0或1。你知道吗只需将
return
语句放在for循环之外另外,您的函数非常简单,可以用一行代码编写,如下所示:
相关问题 更多 >
编程相关推荐