>"I give you a new commandment, that you love one another. Just as I have loved you, you also should love one another. By this everyone will know that you are my disciples, if you have love for one another." (JOHN 14:34-35)
#è¯å¥(4)
for循ç¯å¨Pythonä¸åºç¨å¹¿æ³ï¼æä»¥ï¼è¦ç¨æ´å¤çç¯å¹
æ¥ä»ç»ã
##å¹¶è¡è¿ä»£
å
³äºè¿ä»£ï¼å¨[ãå表(2)ã](./112.md)䏿¾ç»æå°è¿âå¯è¿ä»£ç(iterable)âè¿ä¸ªè¯ï¼å¹¶ç»äºäºéå½è§£éï¼è¿é忬¡æå°âè¿ä»£âï¼è¯´æå®å¨Pythonä¸å æéè¦çä½ç½®ã
è¿ä»£ï¼å¨Pythonä¸è¡¨ç°å°±æ¯ç¨for循ç¯ï¼ä»åºå对象ä¸è·å¾ä¸å®æ°éçå
ç´ ã
å¨åé¢ä¸èä¸ï¼ç¨forå¾ªç¯æ¥è·å¾å表ãå符串ãå
ç»ï¼ä¹è³äºåå
¸çé®å¼å¯¹ï¼é½æ¯è¿ä»£ã
ç°å®ä¸è¿ä»£ä¸é½æ¯é£ä¹ç®åçï¼æ¯å¦è¿ä¸ªé®é¢ï¼
**é®é¢ï¼**æä¸¤ä¸ªå表ï¼å嫿¯ï¼a = [1, 2, 3, 4, 5], b = [9, 8, 7, 6, 5]ï¼è¦è®¡ç®è¿ä¸¤ä¸ªå表ä¸å¯¹åºå
ç´ çåã
**è§£æï¼**
太ç®åäºï¼ä¸çå°±ç¥éç»æäºã
å¾å¥½ï¼è¿æ¯ä½ çæ¹æ³ï¼å¦ææ¯è®©Pythonæ¥åï¼åºè¯¥æä¹åå¢ï¼
è§å¯åç°ä¸¤ä¸ªå表çé¿åº¦ä¸æ ·ï¼é½æ¯5ãé£ä¹å¯¹åºå
ç´ æ±åï¼å°±æ¯ç¸åçç´¢å¼å¼å¯¹åºçå
ç´ æ±åï¼å³`a[i]+b[i]`(i=0,1,2,3,4)ï¼è¿æ ·ä¸ä¸ªä¸ä¸ªå°å°±æç¸åºå
ç´ åæ±åºæ¥äºãå½ç¶ï¼è¦ç¨foræ¥åè¿ä¸ªäºæ
äºã
>>> a = [1, 2, 3, 4, 5]
>>> b = [9, 8, 7, 6, 5]
>>> c = []
>>> for i in range(len(a)):
... c.append(a[i]+b[i])
...
>>> c
[10, 10, 10, 10, 10]
çæ¥forç表ç°è¿ä¸éã
ä¸è¿ï¼è¿ç§æ¹æ³è½ç¶è§£å³é®é¢äºï¼ä½Pythonæ»ä¸ä¼å±éäºä¸ä¸ªè§£å³ä¹éï¼èä¸ï¼ç¨Pythonç¼ç¨ï¼è¿è¦è¿½æ±ä¼é
ã
äºæ¯ï¼`zip()`ââä¸ä¸ªå
å»ºå½æ°å§å§æ¥è¿ï¼å®å¯ä»¥è®©åæ ·çé®é¢æä¸ä¸æ ·çè§£å³éå¾ï¼çèµ·æ¥æ´æèå¿ã
å
è¦çä¸ç`zip()`çææ¡£ï¼ä»¥äºè§£å®ç身ä¸ã
å¨Python 2ä¸ï¼æ¯è¿æ ·æè¿°çï¼
>>> help(zip)
Help on built-in function zip in module __builtin__:
zip(...)
zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
Return a list of tuples, where each tuple contains the i-th element
from each of the argument sequences. The returned list is truncated
in length to the length of the shortest argument sequence.
å¨Python 3ä¸ï¼ç¸æ¯Python 2ï¼æä¸äºç¨å¾®çå·®å«ã
>>> help(zip)
Help on class zip in module builtins:
class zip(object)
| zip(iter1 [,iter2 [...]]) --> zip object
|
| Return a zip object whose .__next__() method returns a tuple where
| the i-th element comes from the i-th iterable argument. The .__next__()
| method continues until the shortest iterable in the argument sequence
| is exhausted and then it raises StopIteration.
Python 2ä¸ï¼åæ°æ¯`seq1, seq2, ...`ï¼æææ¯åºåæ°æ®ï¼å¨Python 3ä¸ï¼åæ°éè¦æ¶å¯è¿ä»£å¯¹è±¡ãè¿ç¹å·®å«ï¼éå¸¸æ¯æ²¡æä»ä¹å½±åçï¼å 为åºå乿¯å¯è¿ä»£çãå¼å¾å
³æ³¨çæ¯è¿åå¼ï¼å¨Python 2ä¸ï¼è¿å弿¯ä¸ä¸ªå表对象ï¼éé¢ä»¥å
ç»ä¸ºå
ç´ ï¼èPython 3ä¸è¿åçæ¯ä¸ä¸ªzip对象ã
éè¿å®éªæ¥çè§£ä¸é¢çææ¡£ï¼
Python 2ï¼
>>> a = "qiwsir"
>>> b = "github"
>>> zip(a, b)
[('q', 'g'), ('i', 'i'), ('w', 't'), ('s', 'h'), ('i', 'u'), ('r', 'b')]
Python 3ï¼
>>> zip(a, b)
>>> list(zip(a, b))
[('q', 'g'), ('i', 'i'), ('w', 't'), ('s', 'h'), ('i', 'u'), ('r', 'b')]
妿åºåé¿åº¦ä¸åï¼é£ä¹å°±ä»¥"the length of the shortest argument sequence"为åã
>>> c = [1, 2, 3]
>>> d = [9, 8, 7, 6]
>>> zip(c, d) #è¿æ¯Python 2çç»æï¼å¦ææ¯Python 3ï¼è¯·ä»¿ç
§åé¢çæ¹å¼æ¾ç¤ºæ¥ç
[(1, 9), (2, 8), (3, 7)]
>>> m = {"name", "lang"}
>>> n = {"qiwsir", "python"}
>>> zip(m, n) #è¿æ¯Python 2çç»æï¼å¦ææ¯Python 3ï¼è¯·ä»¿ç
§åé¢çæ¹å¼æ¾ç¤ºæ¥ç
[('lang', 'python'), ('name', 'qiwsir')]
mï¼næ¯åå
¸åï¼å½ç¶ä¸æ¯ãä¸é¢çææ¯åå
¸å¢ã
>>> s = {"name":"qiwsir"}
>>> t = {"lang":"python"}
>>> zip(s,t)
[('name', 'lang')]
zipæ¯ä¸ä¸ªå
ç½®å½æ°ï¼å®çåæ°å¿
é¡»æ¯åºåï¼å¦ææ¯åå
¸ï¼é£ä¹é®è§ä¸ºåºåãç¶åå°åºå对åºçå
ç´ ä¾æ¬¡ç»æå
ç»ï¼å为ä¸ä¸ªå表çå
ç´ ã
ä¸é¢æ¯æ¯è¾ç¹æ®çæ
åµï¼åæ°æ¯ä¸ä¸ªåºåå¯¹è±¡çæ¶åï¼çæçç»ææ ·åï¼
>>> a ='qiwsir'
>>> c = [1, 2, 3]
>>> zip(c) #è¿æ¯Python 2çç»æï¼å¦ææ¯Python 3ï¼è¯·ä»¿ç
§åé¢çæ¹å¼æ¾ç¤ºæ¥ç
[(1,), (2,), (3,)]
>>> zip(a)
[('q',), ('i',), ('w',), ('s',), ('i',), ('r',)]
å¾å¥½ç`zip()`ï¼é£ä¹å°±ç¨å®æ¥è§£å³åé¢é£ä¸ªä¸¤ä¸ªå表ä¸å¼å¯¹åºç¸å å§ã
>>> d = []
>>> for x,y in zip(a,b):
... d.append(x+y)
...
>>> d
[10, 10, 10, 10, 10]
å¤ä¹ä¼é
çè§£å³ï¼
æ¯è¾è¿ä¸ªé®é¢ç两ç§è§£æ³ï¼ä¼¼ä¹ç¬¬ä¸ç§è§£æ³éç¨é¢è¾çªï¼æ¯å¦ï¼å¦æå·²ç¥ç»å®ç两个å表é¿åº¦ä¸åï¼ç¬¬ä¸ç§è§£æ³å°±åºé®é¢äºãè第äºç§è§£æ³è¿å¯ä»¥ç»§ç»éç¨ãçç¡®å¦æ¤ï¼ä¸è¿ï¼ç¬¬ä¸ç§è§£æ³ä¹ä¸æ¯ä¸è½ä¿®è®¢çã
>>> a = [1, 2, 3, 4, 5]
>>> b = ["python","www.itdiffer.com","qiwsir"]
å¦æå·²ç¥æ¯è¿æ ·ä¸¤ä¸ªå表ï¼è¦è®²å¯¹åºçå
ç´ âå èµ·æ¥âã
>>> length = len(a) if len(a)>> length
3
é¦å
ç¨è¿ç§æ¹æ³è·å¾ä¸¤ä¸ªåè¡¨ä¸æççé£ä¸ªå表çé¿åº¦ãçé£å¥ä¸å
æä½ï¼è¿æ¯é常pythonicçåæ³å¦ãååºè¿å¥ï¼å°±å¯ä»¥åå
髿äºãååã
>>> for i in range(length):
... c.append(str(a[i]) + ":" + b[i])
...
>>> c
['1:python', '2:www.itdiffer.com', '3:qiwsir']
æè¿æ¯ç¨ç¬¬ä¸ä¸ªæè·¯åçï¼ç»è¿è¿ä¹ä¿®æ£ä¸ä¸ï¼ä¹è¿è½ç¨ãè¦æ³¨æä¸ä¸ªç»èï¼å¨âå âçæ¶åï¼ä¸è½ç´æ¥ç¨`a[i]`ï¼å 为å®å¼ç¨ç对象æ¯ä¸ä¸ªæ´æ°ç±»åï¼ä¸è½è·åé¢çå符串类åç¸å ï¼å¿
须转åä¸ä¸ã
å½ç¶ï¼`zip()`乿¯è½è§£å³è¿ä¸ªé®é¢çã
>>> d = []
>>> for x,y in zip(a, b):
... d.append(x + y)
...
Traceback (most recent call last):
File "", line 2, in
TypeError: unsupported operand type(s) for +: 'int' and 'str'
æ¥éï¼çé误信æ¯ï¼æååæéçé£ä¸ªé®é¢å°±ååºæ¥äºãæä»¥ï¼åºè¯¥è¿ä¹åï¼
>>> for x,y in zip(a, b):
... d.append(str(x) + ":" + y)
...
>>> d
['1:python', '2:www.itdiffer.com', '3:qiwsir']
è¿æå¾å°äºæ£ç¡®ç»æã
åè®°ï¼**computeræ¯ä¸ä¸ªå§å¨ï¼å¥¹éå¸¸ç§æ°ï¼éè¦æ²ä»£ç çå°ä¼å们èå¿å°ãç»å¿å°è·å¥¹ç¸å¤ã**
以ä¸ä¸¤ç§åæ³é£ä¸ªæ´å¥½å¢ï¼åè
ï¼åè
ï¼
>>> result = [(2, 11), (4, 13), (6, 15), (8, 17)]
>>> zip(*result)
[(2, 4, 6, 8), (11, 13, 15, 17)]
`zip()`è¿è½è¿ä¹å¹²ï¼æ¯ä¸æ¯æç¹ææï¼
ä¸é¢å»¶ä¼¸ä¸ä¸ªé®é¢ï¼
**é®é¢**ï¼æä¸ä¸ªåå
¸ï¼myinfor = {"name":"qiwsir", "site":"qiwsir.github.io", "lang":"python"}ï¼å°è¿ä¸ªåå
¸åæ¢æï¼infor = {"qiwsir":"name", "qiwsir.github.io":"site", "python":"lang"}
**è§£æï¼**
è§£æ³ä¸ï¼ç¨for循ç¯ï¼
>>> myinfor = {"name":"qiwsir", "site":"qiwsir.github.io", "lang":"python"}
>>> infor = {}
>>> for k,v in myinfor.items():
... infor[v]=k
...
>>> infor
{'python': 'lang', 'qiwsir.github.io': 'site', 'qiwsir': 'name'}
è§£æ³äºï¼ç¨`zip()`ï¼
>>> dict(zip(myinfor.values(), myinfor.keys()))
{'python': 'lang', 'qiwsir.github.io': 'site', 'qiwsir': 'name'}
åå¼ï¼è¿æ¯ä»ä¹æ
åµï¼åæ¥è¿ä¸ª`zip()`è¿è½è¿æ ·ã
为äºè½å¤çª¥æ¢å
é¨ç奥ç§ï¼æä»¬å°é£ä¸è¡åè§£å¼æ¥ã
>>> myinfor.values() #å¾å°åå
¸å¼çå表
['python', 'qiwsir', 'qiwsir.github.io']
>>> myinfor.keys() #å¾å°åå
¸é®çå表
['lang', 'name', 'site']
>>> temp = zip(myinfor.values(), myinfor.keys()) #å缩æä¸ä¸ªåè¡¨ï¼æ¯ä¸ªå
ç´ æ¯ä¸ä¸ªå
ç»ï¼å
ç»ä¸ç¬¬ä¸ä¸ªæ¯å¼ï¼ç¬¬äºä¸ªæ¯é®
>>> temp #Python 3䏿¯ä¸ä¸ªzip对象
[('python', 'lang'), ('qiwsir', 'name'), ('qiwsir.github.io', 'site')]
>>> dict(temp) #è¿æ¯å½æ°dict()çåè½ï¼å°ä¸è¿°å表转å为åå
¸
{'python': 'lang', 'qiwsir.github.io': 'site', 'qiwsir': 'name'}
è³æ¤ï¼æ¯ä¸æ¯æç½`zip()`å循ç¯çå
³ç³»äºå¢ï¼æäºå®å¯ä»¥è®©æäºå¾ªç¯ç®åã
##enumerate
`enumerate()`乿¯å
å»ºå½æ°ã
æ¬æ¥æä»¬å¯ä»¥éè¿`for i in range(len(list))`çæ¹å¼å¾å°ä¸ä¸ªåè¡¨çæ¯ä¸ªå
ç´ å¯¹åºçç´¢å¼ï¼ç¶åå¨ç¨`list[i]`çæ¹å¼å¾å°è¯¥å
ç´ ãè¿æ¯åé¢ç¨è¿çè·¯æ°ã
使¯ï¼å¦æè¦åæ¶å¾å°å
ç´ ç´¢å¼åå
ç´ æä¹åï¼
>>> week = ['monday', 'sunday', 'friday']
>>> for i in range(len(week)):
... print week[i]+' is '+str(i) #注æï¼iæ¯intç±»åï¼å¦æååé¢çç¨+è¿æ¥ï¼å¿
é¡»æ¯strç±»å
... #å¦æä½¿ç¨Python 3ï¼è¯·èªè¡æ´æ¢ä¸ºprint(week[i]+' is '+str(i))
monday is 0
sunday is 1
friday is 2
å
å»ºå½æ°enumerateï¼è½å¤å®ç°ç±»ä¼¼çåè½ï¼å¹¶ä¸ç®åã
>>> for (i, day) in enumerate(week):
... print day+' is '+str(i) #Python 3: print(day+' is '+str(i))
...
monday is 0
sunday is 1
friday is 2
宿¹ææ¡£æ¯è¿ä¹è¯´çï¼
>Return an enumerate object. sequence must be a sequence, an iterator, or some other object which supports iteration. The next() method of the iterator returned by enumerate() returns a tuple containing a count (from start which defaults to 0) and the values obtained from iterating over sequence:
顺便æå½å 个ä¾åï¼ä¾ç宿¬£èµï¼æå¥½å®éªä¸ä¸ã
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
对äºè¿æ ·ä¸ä¸ªå表ï¼
>>> mylist = ["qiwsir",703,"python"]
>>> enumerate(mylist)
>>> list(enumerate(mylist))
[(0, 'qiwsir'), (1, 703), (2, 'python')]
å设计ä¸ä¸ªå°é®é¢ï¼ç»ä¹ ä¸ä¸è¿ä¸ªå½æ°ã
**é®é¢ï¼**å°å符串ä¸çæäºåç¬¦æ¿æ¢ä¸ºå
¶å®çå符串ãåå§å符串"Do you love Canglaoshi? Canglaoshi is a good teacher."ï¼è¯·å°"Canglaoshi"æ¿æ¢ä¸º"PHP".
**è§£æï¼**
>>> raw = "Do you love Canglaoshi? Canglaoshi is a good teacher."
è¿æ¯æè¦æ±çé£ä¸ªå符串ï¼ä½æ¯ï¼ä¸è½ç´æ¥å¯¹è¿ä¸ªå符串使ç¨`enumerate()`ï¼å 为å®ä¼åæè¿æ ·ï¼
>>> list(enumerate(raw))
[(0, 'D'), (1, 'o'), (2, ' '), (3, 'y'), (4, 'o'), (5, 'u'), (6, ' '), (7, 'l'), (8, 'o'), (9, 'v'), (10, 'e'), (11, ' '), (12, 'C'), (13, 'a'), (14, 'n'), (15, 'g'), (16, 'l'), (17, 'a'), (18, 'o'), (19, 's'), (20, 'h'), (21, 'i'), (22, '?'), (23, ' '), (24, 'C'), (25, 'a'), (26, 'n'), (27, 'g'), (28, 'l'), (29, 'a'), (30, 'o'), (31, 's'), (32, 'h'), (33, 'i'), (34, ' '), (35, 'i'), (36, 's'), (37, ' '), (38, 'a'), (39, ' '), (40, 'g'), (41, 'o'), (42, 'o'), (43, 'd'), (44, ' '), (45, 't'), (46, 'e'), (47, 'a'), (48, 'c'), (49, 'h'), (50, 'e'), (51, 'r'), (52, '.')]
è¿ä¸æ¯æéè¦çãæä»¥ï¼å
æraw转å为å表ï¼
>>> raw_lst = raw.split(" ")
ç¶åç¨`enumerate()`
>>> for i, string in enumerate(raw_lst):
... if string == "Canglaoshi":
... raw_lst[i] = "PHP"
...
没æä»ä¹å¼å¸¸ç°è±¡ï¼æ¥çä¸ä¸é£ä¸ªraw_lstå表ï¼ççæ¯ä¸æ¯æ"Canglaoshi"æ¿æ¢ä¸º"PHP"äºã
>>> raw_lst
['Do', 'you', 'love', 'Canglaoshi?', 'PHP', 'is', 'a', 'good', 'teacher.']
åªæ¿æ¢äºä¸ä¸ªï¼è¿æä¸ä¸ªæ²¡ææ¿æ¢ã为ä»ä¹ï¼ä»ç»è§å¯åç°ï¼æ²¡ææ¿æ¢çé£ä¸ªæ¯'Canglaoshi?',è·æ¡ä»¶å¤æä¸ç"Canglaoshi"ä¸ä¸æ ·ã
ä¿®æ¹ä¸ä¸ï¼ææ¡ä»¶æ¾å®½ï¼
>>> for i, string in enumerate(raw_lst):
... if "Canglaoshi" in string:
... raw_lst[i] = "PHP"
...
>>> raw_lst
['Do', 'you', 'love', 'PHP', 'PHP', 'is', 'a', 'good', 'teacher.']
好çãç¶åå¢ï¼å转å为å符串ï¼çç»è¯»è
è¯è¯ã
##å表解æ
å
çä¸é¢çä¾åï¼è¿ä¸ªä¾åæ¯æ³å¾å°1å°9çæ¯ä¸ªæ´æ°çå¹³æ¹ï¼å¹¶ä¸å°ç»ææ¾å¨å表ä¸ï¼æå°åºæ¥ã
>>> power2 = []
>>> for i in range(1, 10):
... power2.append(i*i)
...
>>> power2
[1, 4, 9, 16, 25, 36, 49, 64, 81]
Pythonæä¸ä¸ªé常强大çåè½ï¼å°±æ¯å表解æï¼å®è¿æ ·ä½¿ç¨ï¼
>>> squares = [x**2 for x in range(1, 10)]
>>> squares
[1, 4, 9, 16, 25, 36, 49, 64, 81]
çå°è¿ä¸ªç»æï¼è¯»è
è¿ä¸æå¹åï¼
è¿å°±æ¯Pythonï¼è¿½æ±ç®æ´ä¼é
çPythonï¼
å
¶å®æ¹ææ¡£ä¸æè¿æ ·ä¸æ®µæè¿°ï¼éåºäºå表解æççè°ï¼
>List comprehensions provide a concise way to create lists. Common applications are to make new lists where each element is the result of some operations applied to each member of another sequence or iterable, or to create a subsequence of those elements that satisfy a certain condition.
è¿å°±æ¯Pythonæææçå°æ¹ï¼ä¹æ¯è®¡ç®æºé«çº§è¯è¨ç¼ç¨æææçå°æ¹ï¼ä½ åªè¦å¨èçï¼æ»è½æ¾å°æåçä¸è¥¿ã
å
¶å®ï¼ä¸ä»
ä»
对æ°åç»æçåè¡¨ï¼ææçé½å¯ä»¥å¦æ¤æä½ã请å¨å¹³å¤äºæ¿å¨çå¿ä¹åï¼é»é»å°çä¸é¢ç代ç ï¼ææä¸ä¸å表解æçé
åã
>>> mybag = [' glass',' apple','green leaf '] #æçåé¢æç©ºæ ¼ï¼æçåé¢æç©ºæ ¼
>>> [one.strip() for one in mybag] #廿å
ç´ ååçç©ºæ ¼
['glass', 'apple', 'green leaf']
æ¬èä¸å·²ç»æ¼ç¤ºè¿çé®é¢ï¼é½è½ç¨åè¡¨è§£ææ¥éåã读è
ä¸å¦¨è¯è¯ã
å¨å¾å¤æ
åµä¸ï¼å表解æçæ§è¡æçé«ï¼ä»£ç ç®æ´æäºãæ¯å®é
åç¨åºä¸ç»å¸¸è¢«ç¨å°çã
ç°å¨Pythonçä¸¤ä¸ªçæ¬ï¼å¯¹å表解éä¸ï¼è¿æ¯æä¸ç¹ç¹å·®å«çï¼è¯·è®¤ççä¸é¢çæ¯è¾æä½ã
Python 2:
>>> i = 1
>>> [ i for i in range(9)]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> i
8
Python 3:
>>> i = 1
>>> [i for i in range(9)]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> i
1
ææ²¡æè§å¯å°åºå«ï¼
å
`i = 1`ï¼ç¶åæ¯ä¸ä¸ªå表解æå¼ï¼é常巧åçæ¯ï¼å表解æå¼ä¸ä¹ç¨äºåé`i`ãè¿ç§æ
åµï¼å¨ç¼ç¨ä¸æ¯å¸¸å¸¸éå°çï¼æä»¬é常æ`i=1`ä¸çåé`i`称为å¤äºå
¨å±å½å空é´éé¢ï¼å½å空é´ï¼æ¯ä¸ä¸ªæ°è¯æ±ï¼æä¸ç¨èµ·æ¥ï¼åé¢ä¼è®²è¿°ï¼ï¼èå表解æå¼ä¸çåé`i`æ¯å¨å表解æå
ï¼ç§°ä¸ºå¤å¨å±é¨å½å空é´ãå¨Python 3ä¸ï¼for循ç¯éçåéä¸åä¸å
¨å±å½å空é´çåéæå
³èäºãè¿ç§æ¹åï¼çªä»¥ä¸ºï¼æ¯è¿æ¥ã
对äºå¾ªç¯ï¼é¤äºforä¹å¤ï¼è¿æä¸ä¸ªå«åwhileã
------
[æ»ç®å½](./index.md) | [ä¸èï¼è¯å¥(3)](./123.md) | [ä¸èï¼è¯å¥(5)](./125.md)
å¦æä½ è®¤ä¸ºæå¿
è¦æèµæï¼è¯·éè¿æ¯ä»å®ï¼**[email protected]**,ä¸èææ¿ã