如何从结果中删除括号,同时将函数保留在一行代码中?
day_list = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
def day_to_number(inp):
return [day for day in range(len(day_list)) if day_list[day] == inp]
print day_to_number("Sunday")
print day_to_number("Monday")
print day_to_number("Tuesday")
print day_to_number("Wednesday")
print day_to_number("Thursday")
print day_to_number("Friday")
print day_to_number("Saturday")
输出:
[0]
[1]
[2]
[3]
[4]
[5]
[6]
最佳答案
列表理解是矫枉过正的。如果您的列表不包含重复项(如您的样本数据所示,就这样做)
>>> def day_to_number(inp):
... return day_list.index(inp)
...
>>> day_to_number("Sunday")
0
我还建议将 day_list
作为函数的参数,即:
>>> def day_to_number(inp, days):
... return days.index(inp)
...
>>> day_to_number("Sunday", day_list)
0
在全局 namespace 中查找它有点难看。
为了让整个事情更有效率(list.index
是 O(n))使用字典:
>>> days = dict(zip(day_list, range(len(day_list))))
>>> days
{'Monday': 1, 'Tuesday': 2, 'Friday': 5, 'Wednesday': 3, 'Thursday': 4, 'Sunday': 0, 'Saturday': 6}
>>>
>>> def day_to_number(inp, days):
... return days[inp]
...
>>> day_to_number("Sunday", days)
0
关于python - 我的函数返回一个包含单个整数的列表,如何让它只返回整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35556910/