在课堂上使用namedtuple

彼得123

我正在练习O'Reily的书Fluent Python中的一段代码

这段代码如下:

import collections

    Card= collections.namedtuple('Card',['rank','suit']);

    class FrenchDeck:
        ranks=[str(n) for n in range (2,11)]+ list('JQKA')
        suits= 'spades diamonds clubs hearts'.split()

        def __init__(self):
            self._cards= [Card(rank,suit)   for rank in self.ranks
                                            for suit in self.suits]
        def __len__(self):
            return len(self._cards)

        def __getitem__(self,position):
            return self._cards[position]

我可以看到namedtuple的功能如何用于将等级中的每个值分配给所有西装。

作为我自己的实践之一,我想寻求有关在此范式中分配值的帮助。具体来说,在此片段中,不是给一个学生四个年级,而是使用namedtuple功能为一个学生分配各自的唯一年级的方法是什么?(例如John-89,Jay-98,Joe-87,Joseph-91)。我从本书样本中反省的方式仍将为所有学生分配所有成绩。非常感谢您的关注和帮助!

Student= collections.namedtuple('Student',['name','grade'])

studentname=["John","Jay","Joe","Joseph"]

class grade: 
    names= studentname
    grades=[89,98,87,91]

    def __init__(self):
        self._stud=[
        Student(name,grade) for name in self.names 
                            for grade in self.grades ]  

    def __len__(self):
        return len(self._stud)

    def __getitem__(self,position):
        return self._stud[position]
马克·迈耶

在本书的代码中,每个西装都具有每个价值-这是西装和价值的笛卡尔积。在您的代码中,您只需要从学生到成绩的一对一映射。通常使用完成此操作zip()您可以使用zip(self.names, self.grades),这将为您提供相应的对。那么你可以得到的名单Students

self._stud=[Student(n, g) for n, g in zip(self.names, self.grades)]

您也可以上课,这样它就不依赖于全局变量,而是采用类似以下内容的学生和成绩列表:

import collections

Student = collections.namedtuple('Student',['name','grade'])

studentname = ["John","Jay","Joe","Joseph"]
grades = [89,98,87,91]

class Grades: 
    def __init__(self, names, grades):
        self._stud = [Student(n, g) for n, g in zip(names, grades)]

    def __len__(self):
        return len(self._stud)

    def __getitem__(self,position):
        return self._stud[position]

g = Grades(studentname, grades)

g._stud 将会:

[
  Student(name='John', grade=89),
  Student(name='Jay', grade=98),
  Student(name='Joe', grade=87),
  Student(name='Joseph', grade=91)
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在课堂上使用$ _GET

来自分类Dev

在课堂上使用$ _GET

来自分类Dev

在课堂上使用析构函数

来自分类Dev

如何在课堂上使用装饰器

来自分类Dev

我可以在课堂上使用__autoload吗?

来自分类Dev

无法在课堂上使用此函数调用

来自分类Dev

在课堂上使用TCA的TYPO3

来自分类Dev

如何在课堂上使用MySQLi

来自分类Dev

Angular 4 / TypeScript HttpModule 在课堂上的使用

来自分类Dev

如何在课堂上使用依赖注入?

来自分类Dev

课堂上的OOP困惑

来自分类Dev

课堂上逻辑太多

来自分类Dev

从课堂上读常量

来自分类Dev

课堂上的例外

来自分类Dev

在课堂上抛出异常

来自分类Dev

课堂上的多个div

来自分类Dev

课堂上重载operator +

来自分类Dev

使用Airbnb规则的带有胖箭头的ESLint在课堂上

来自分类Dev

如果您在课堂上不使用“ this”会怎样?

来自分类Dev

为什么Firefox注入“严格使用”?在课堂上的方法?

来自分类Dev

无法在课堂上使用龙目岛@NoArgsConstructor

来自分类Dev

FMDatabase已锁定,在课堂上使用的最佳实践

来自分类Dev

Getter&Setter还可以在课堂上使用吗?

来自分类Dev

工匠队列使用可变值在课堂上工作

来自分类Dev

课堂上的_description是什么?为什么使用它?

来自分类Dev

我在课堂上正确使用了this关键字吗?

来自分类Dev

如何在课堂上使用PDO连接工作

来自分类Dev

我在课堂上使用 promise 哪里出错了?

来自分类Dev

在课堂上达到课堂功能?