亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: Python中使用類(lèi)似C語(yǔ)言的結(jié)構(gòu)(Struct) [打印本頁(yè)]

作者: sunny7476    時(shí)間: 2012-04-22 14:44
標(biāo)題: Python中使用類(lèi)似C語(yǔ)言的結(jié)構(gòu)(Struct)
在一篇帖子中看到一位朋友需要在Python中使用類(lèi)似C語(yǔ)言中的結(jié)構(gòu)體。原本想直接回復(fù)的,后來(lái)想,為了方便更多的人看到,就新開(kāi)一個(gè)帖子了。

在Python中使用結(jié)構(gòu)體,所要做的僅僅是下載NumPy,用其中的dtype來(lái)實(shí)現(xiàn),實(shí)現(xiàn)方法為:

首先,如同C語(yǔ)言一樣,新建結(jié)構(gòu)體:
  1. Python:
  2. A = numpy.dtype({'names': ['languageName', 'ranking'],
  3.                             'formats': ['S10', 'i']}, align = True)
復(fù)制代碼
C:
  1.     typedef struct A
  2.     {
  3.         char a[10];
  4.         int b;
  5.     }SA
復(fù)制代碼
解釋,'names'和'formats'都是結(jié)構(gòu)體數(shù)組中的鍵域,不能更改成其他名稱(chēng)。names字段相當(dāng)于結(jié)構(gòu)體中的每個(gè)成員,formats字段為結(jié)構(gòu)體中按序?qū)?yīng)的成員的格式,如本例中formats字段第一項(xiàng)內(nèi)容為S10,表示對(duì)應(yīng)的names成員languageName的格式為長(zhǎng)度10個(gè)字節(jié)的字符串;同樣,formats的第二項(xiàng)"i"表示names第二個(gè)成為為32位的整型。
最后的align = True是讓Python中的結(jié)構(gòu)數(shù)組內(nèi)存對(duì)齊。詳見(jiàn)張若愚所著的《Python科學(xué)計(jì)算》P31.

接下來(lái),新建一個(gè)結(jié)構(gòu)數(shù)組a:
  1. a = numpy.array([("C", 1), ("Java", 2), ("Python", 8)], dtype = A)
復(fù)制代碼
現(xiàn)在,就可以像C語(yǔ)言中一樣使用結(jié)構(gòu)數(shù)組a了,所不同的是訪問(wèn)a[0]的第一個(gè)成員使用的方法為:
  1. a[0]["languageName"]
復(fù)制代碼
截圖如下


作者: 千年老狼    時(shí)間: 2012-04-22 21:16
新手幫頂lollol
作者: sunny7476    時(shí)間: 2012-04-22 22:26
謝謝!
作者: favory    時(shí)間: 2012-04-23 11:45
謝謝! 學(xué)習(xí)啦,幫頂!
作者: qxhgd    時(shí)間: 2015-04-29 17:23
其實(shí)用字典應(yīng)該也可以的吧




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2