如何定义一个使用 Python 读取并返回列表中所有值的函数?

Posted

技术标签:

【中文标题】如何定义一个使用 Python 读取并返回列表中所有值的函数?【英文标题】:How can i define a function that reads and returns all values in the list using Python? 【发布时间】:2020-06-05 13:42:41 【问题描述】:

我有这个字符串用逗号分隔。

'1.0,5.0,6.0,7.0,8.0,9.0'

def var():
   for i in listnumbers:
       return i +'.0'

当我这样做时

var()

我只会得到

1.0 

如何让结果包含循环中的所有数字?

1.0,5.0,6.0,7.0,8.0,9.0

【问题讨论】:

你的函数只返回一个值,因为 return 语句是 in 循环,所以它在第一次迭代时返回。您应该尝试收集循环中的值,然后在循环完成时返回集合。 【参考方案1】:
def myfun(mycsv): 
    return [i+'.0' for i in mycsv.split(',')] 

print(myfun('1.0,5.0,6.0,7.0,8.0,9.0'))

#['1.0.0', '5.0.0', '6.0.0', '7.0.0', '8.0.0', '9.0.0']

如果你想要一个字符串,那么只需使用join:

print(','.join(myfun('1.0,5.0,6.0,7.0,8.0,9.0')))

或者改变函数返回一个字符串;

return ','.join([i+'.0' for i in mycsv.split(',')])

【讨论】:

有没有办法将其保存为字符串?在这里它变成了一个列表。 编辑回答,你应该多读一点python的工作原理【参考方案2】:

在循环完成之前,您正在循环内部返回。

如果我正确理解了您的问题,那么您正在寻找的似乎是列表理解。

如果您的输入是一个列表:

def var(l):
  return [i + '.0' for i in l]

如果您的输入是一个字符串,就像从您的描述中看到的那样,您必须先将其拆分:

def var(l):
  return [i + '.0' for i in l.split(',')]

这相当于其他语言中的mapping。

【讨论】:

【参考方案3】:

您可以使用string.split(',') 将字符串划分为列表,然后遍历新创建的列表并打印每个元素。 A 代码可以这样排列:

for s in string.split(','):
    print(s+'.0')

【讨论】:

以上是关于如何定义一个使用 Python 读取并返回列表中所有值的函数?的主要内容,如果未能解决你的问题,请参考以下文章

python文件操作

python让列表存储1-10000的数字

从文本文件中读取句子并使用 Python 3 附加到列表中 [关闭]

三维坐标系下,python如何获取鼠标点击事件,返回三维坐标x,y,z?

在 python 中读取文本文件并从中创建两个列表

Python:如何检查列表是不是包含数值并返回布尔值?