python - Django rest框架序列化教程一头雾水
问题描述
我不明白下面的代码是做什么的。我不知道item[1][0]
第 8 行是从哪里来的。它没有定义。我也不知道下一行的作用。顺便说一句,我有 java 背景。
我得到了理解的想法,所以我得到了第七行。
from django.db import models
from pygments.lexers import get_all_lexers
from pygments.styles import get_all_styles`
LEXERS = [item for item in get_all_lexers() if item[1]]
LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS])
STYLE_CHOICES = sorted([(item, item) for item in get_all_styles()])
解决方案
在上面的代码中,[item for item in get_all_lexers() if item[1]]
返回的 alist
存储tuple's
在变量中LEXERS
中的每个元素都LEXERS
包含一个tuple
withnested tuple
>> LEXERS[1]
>> ('LessCss', ('less',), ('*.less',), ('text/x-less-css',))
在线LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS])
,再次使用列表理解,它迭代list
oftuple
并返回排序list
后的tuple
一些过滤数据。
在 List Comprehension 中,在迭代 Listfor item in LEXERS
时,它将每个元素LEXERS
视为 aitem
并对其执行操作item
(即在 List 元素上)。
假设在迭代列表时您正在获取item
数据
('LessCss', ('less',), ('*.less',), ('text/x-less-css',))
它正在访问item[1]
ie('less',)
并且item[1][0]
意味着它正在'less'
从元组的第一个位置返回您。
希望这个解释能帮助您更好地理解列表理解!
推荐阅读
- apache-kafka - 如何使用Kafka Stream滑动窗口动态包含足够的数据点
- wcf - 如何在 Microsoft Dynamics CRM 2011 中获取新创建的实体而无需额外的 IOrganizationService 调用?
- angularjs - 不使用带有 angularjs 参数的 ngroute 加载我的页面
- azure - 从 Azure Key Vault 中删除证书?这会删除证书资源类型吗?
- c# - 需要帮助以在文本框中显示列表的内容
- swift - 当我点击它时 UIButton 图像不会改变
- r - 基本 R summary() 和 summarytools descr() 函数结果之间的奇怪差异
- scala - 构造函数(特征)不能应用于(类扩展特征)
- dynamics-crm - 如何拦截/替换子网格上的“新建”按钮?
- javascript - 如何修复 Promise {
当试图在 Gatsby 框架中的 keydown 事件上播放音频文件时?