首页 > 解决方案 > 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()])

在此处输入链接描述

标签: pythondjangodjango-rest-framework

解决方案


在上面的代码中,[item for item in get_all_lexers() if item[1]]返回的 alist存储tuple's在变量中LEXERS

中的每个元素都LEXERS包含一个tuplewithnested tuple

>> LEXERS[1]
>> ('LessCss', ('less',), ('*.less',), ('text/x-less-css',))

在线LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS]),再次使用列表理解,它迭代listoftuple并返回排序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'从元组的第一个位置返回您。

希望这个解释能帮助您更好地理解列表理解!


推荐阅读