python3使用map将字符串列表转换为元组

时间:2015-03-27 23:11:56

标签: python-3.x dictionary lambda tuples

我正在将用户输入的字符串列表转换为元组。用户输入一个分数列表,即:(请不要#34;导入分数"建议)

fractions = ["1/2","3/5","4/3","3/8","1/9","4/7"]

我通常会使用以下有效的代码:

user_input = 0
list_frac = []
print('Enter fractions into a list until you type "stop" in lower case:')
while user_input != 'stop':
    user_input = input('Enter a fraction ie: "1/2" >>>')
    list_frac.append(user_input)
list_frac.pop()   # pop "stop" off the list

result = []
for i in list_frac:
    result.append(tuple(i.split('/')))
print(result)

结果是一个元组列表:

fractions = [('1','2'),('3','5')('4','3'),('3','8'),('1','9'),('4','7')]

我想将元组中的值更改为整数,我不知道如何

但是我也希望学习lambda函数,所以我正在练习像这样的简单代码。这是我尝试使用lambda函数语法的相同代码:

tup_result = tuple(map(lambda i: result.append(i.split('/')), result))

但结果是一个空列表,没有错误代码可以帮助我。

问题:如何将元组列表中的字符串更改为整数,然后使用lambda函数实现所有这一切。

任何建议,我有一般概念pf lambda函数,但实际上实现这一点有点令人困惑,感谢帮助人员!

1 个答案:

答案 0 :(得分:1)

我使用了理解来解决任务:

fractions = ["1/2","3/5","4/3","3/8","1/9","4/7"]
print([(int(x),int(y)) for  (x,y) in [k.split('/') for k in fractions]])
>>>[(1, 2), (3, 5), (4, 3), (3, 8), (1, 9), (4, 7)]

我不久前开始使用python,并且在开始时也很困惑如何使用lambda。然后我读到,Guido van Rossum建议,lambda表格会在Python3.0 AlternateLambdaSyntax中消失,从那以后我根本就没有使用过lambda,根本没有问题。当你在某些代码中看到它时,你必须理解它是如何工作的,但是你几乎总能在不使用lambda的情况下编写更易读的代码(尽管我可能是错的)。我希望,它有所帮助。

<强>更新

有一个使用map()和lambda的解决方案,虽然我不希望在我的代码中看到我最大的敌人:

print([(int(x),int(y)) for  [x,y] in list(map(lambda frac: frac.split('/'),fractions))])
>>>[(1, 2), (3, 5), (4, 3), (3, 8), (1, 9), (4, 7)]