python - 我的函数返回一个包含单个整数的列表,如何让它只返回整数?

标签 python list list-comprehension indexof

如何从结果中删除括号,同时将函数保留在一行代码中?

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/

相关文章:

python - Python中的自删除类

javascript - 如何使用回调更改字形的颜色?

python - 重新列出嵌套列表中的项目

python - 如何使用字符串变量中的列表名称

python - 用字母表中的所有字母更改 python 中单词的第一个字母并生成一个列表

根据算术优先级制作括号的Python解析器

python - 两个列表之间的公共(public)元素并保留两个列表中元素的顺序

python - 列表元组 - SETOF 记录的 Python/PostgreSQL 返回类型

Django 多表继承因模型定义中的泄漏变量而阻塞

python - `context_instance=RequestContext(request)` 在 django 中使用 cookies