第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在類中使用命名存根

在類中使用命名存根

躍然一笑 2022-09-27 16:23:03
我正在練習(xí)奧雷利的書《流利的蟒蛇》中的一段代碼。這段代碼如下所示: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]我可以看到如何使用命名tuple的功能將排名中的每個(gè)值分配給所有套裝。作為我自己的實(shí)踐之一,我想尋求有關(guān)在此范式中分配值的幫助。具體來說,在此代碼段中,與其給一個(gè)學(xué)生四個(gè)成績,不如使用命名tuple功能為一個(gè)學(xué)生分配各自獨(dú)特的成績的方法是什么?(例如約翰-89,杰伊-98,喬-87,約瑟夫-91)。我從書中的樣本中反芻的方式仍將把所有成績分配給每個(gè)學(xué)生。非常感謝您的關(guān)注和幫助!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]
查看完整描述

2 回答

?
慕妹3242003

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊

在書中的代碼中,每套西裝都有每一個(gè)價(jià)值——它是西裝和價(jià)值的笛卡爾積。在您的代碼中,您只需要從學(xué)生到成績的一對(duì)一映射。這通常使用 zip() 完成。您可以使用,這將為您提供相應(yīng)的對(duì)。然后,您可以獲取以下列表:zip(self.names, self.grades)Students

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

您也可以將班級(jí)設(shè)置為不依賴于全局變量,并使用如下內(nèi)容獲取學(xué)生和成績列表:


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)

]




查看完整回答
反對(duì) 回復(fù) 2022-09-27
?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

這與命名元組沒有任何關(guān)系。使用卡,您可以使用 和 的每個(gè)元素創(chuàng)建一個(gè)新實(shí)例。Cardrankssuits

對(duì)于 ,您希望使用壓縮結(jié)果中的每個(gè)元素并一起創(chuàng)建一個(gè)新實(shí)例。gradeStudentnamesgrades

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


查看完整回答
反對(duì) 回復(fù) 2022-09-27
  • 2 回答
  • 0 關(guān)注
  • 76 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)