【问题标题】:Django rest framework serialization tutorial confusedDjango rest框架序列化教程一头雾水
【发布时间】:2019-08-13 10:24:28
【问题描述】:

我不知道下面的代码是做什么的。我不知道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()])

Enter link description here

【问题讨论】:

  • 这是一个普通的列表理解,他们从 LEXERS 中的项目中收缩元组
  • 我不明白。我对元组也不是很熟悉。请您进一步解释一下,或者您可以传递一个资源来查找。

标签: python django django-rest-framework


【解决方案1】:

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

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

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

在线LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS]), 再次使用列表理解,它遍历 tuplelist 并返回排序后的 listtuple 以及一些过滤数据。

在 List Comprehension 中,在迭代 List for item in LEXERS 时,它将 LEXERS 中的每个元素视为 item 并在 item 上执行操作(即在 List 元素上)。

假设在迭代列表时你得到item 和数据

('LessCss', ('less',), ('*.less',), ('text/x-less-css',)) 它正在访问item[1],即('less',)item[1][0] 表示它正在从元组的第一个位置返回'less'

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

【讨论】:

  • 非常感谢,但是 item[1][0] 是什么意思
  • ('LessCss', ('less',), ('*.less',), ('text/x-less-css',)) 它正在访问项目[1],即('LessCss',) 这就是你的意思吗?
  • 否,item[1] 表示 ('less',) ,元组的索引从 0 开始。'LessCss' 可以通过 item[0] 访问
  • 是的。事情没有抓住整个概念。但我在问 item[1][0] 是什么意思。如果 item[1] 表示('less',)那为什么还有[0]?
  • ('less' , ) 又是元组,可以使用索引访问元组元素。所以item[0] 会从元组返回'less'
猜你喜欢
  • 2013-01-03
  • 2013-07-02
  • 2020-12-22
  • 2017-10-03
  • 2019-05-20
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多