首页 > 代码库 > 【python的基本数据类型及进制扫盲】

【python的基本数据类型及进制扫盲】

一、进制

1.进制简介

  进制就是进位制,是人们规定的一种进位方法。计算机底层的数据运算和存储都是二进制数据。计算机语言就是二进制,计算机能直接识别二进制数据,其它数据都不能直接识别。

 

2.常用进制 

  对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。我们经常使用的是二进制、八进制、十进制、十六进制。

  • 十进制:有10个基本数字,分别为0、1、2、3、4、5、6、7、8、9,运算规则”逢十进一”;

 

  • 八进制:有8个基本数字,分别为0、1、2、3、4、5、6、7,运算规则”逢八进一”

 

  • 十六进制:有16个基本数字,分别为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,运算规则”逢十六进一”。

 

  • 二进制:有2个基本数字,分别为0、1,运算规则”逢二进一”。

 

技术分享

3.进制转换

我们有最常用的转换方法:用十进制数据除以目标进制得到余数,并将余数从最后一个到第一个排列,就是转换后的目标进制表示形式(简称“除基取余,直到商为0,余数反转”)。以十进制43向二进制转换为例:

技术分享

 

得到的数值排列:101011,所以十进制43的二进制表示形式为101011,同理,如果求八进制、十六进制表示形式,用43除以8、16即可。

 

二、基本数据类型

1.字符串

类:str

方法:选中str,按住command(ctrl)+左键跳转至对应的方法

 

字符串常用方法归纳如下:

  • 1)capitalize

功能:实现字符串首字母大写,自身不变,会生成一个新的值

技术分享
1 def capitalize(self): # real signature unknown; restored from __doc__
2         """
3         S.capitalize() -> str
4         
5         Return a capitalized version of S, i.e. make the first character
6         have upper case and the rest lower case.
7         """
8         return ""
capitalize

 例子:

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 name = hexin
4 v = name.capitalize() #调用str类,执行其中capitalize的方法
5 print(v)

输出:

hexin
Hexin

 

  • 2)casefold

功能:将所有大写变成小写,另外支持多门语言变化

技术分享
1 def casefold(self): # real signature unknown; restored from __doc__
2         """
3         S.casefold() -> str
4         
5         Return a version of S suitable for caseless comparisons.
6         """
7         return ""
casefold

例子:

1 name = HexIn
2 v = name.casefold()
3 print(name)
4 print(v)

输出:

HexIn
hexin

 

  • 3)lower,upper

功能:

lower:将所有的大写变小写,局限英文

upper:将所有小写变大写

 

技术分享
1 def lower(self): # real signature unknown; restored from __doc__
2         """
3         S.lower() -> str
4         
5         Return a copy of the string S converted to lowercase.
6         """
7         return ""
lower

例子:

1 name = HeXin
2 v = name.lower()
3 print(name)
4 print(v)

结果:

HeXin
hexin

 

  • 4)center

功能:文本居中,空白处填充字符

参数1:表示总长度;参数2:空白处填充的字符(长度为1)

技术分享
1 def center(self, width, fillchar=None): # real signature unknown; restored from __doc__
2         """
3         S.center(width[, fillchar]) -> str
4         
5         Return S centered in a string of length width. Padding is
6         done using the specified fill character (default is a space)
7         """
8         return ""
center

例子:

1 name = HeXin
2 v = name.center(20,*)
3 print(name)
4 print(v)

输出:

HeXin
*******HeXin********

 

  • 5)count

功能:表示要查找的子序列在字符串中出现的次数

参数1:要查找的值(子序列);参数2:起始位置(索引);参数3:结束位置(索引)

技术分享
1 def count(self, sub, start=None, end=None): # real signature unknown; restored from __doc__
2         """
3         S.count(sub[, start[, end]]) -> int
4         
5         Return the number of non-overlapping occurrences of substring sub in
6         string S[start:end].  Optional arguments start and end are
7         interpreted as in slice notation.
8         """
9         return 0
count

例子:

1 name = HeXinddaklfjsl;dfjcnljdajsflajdf
2 v = name.count(a)
3 i = name.count(a,0,15)
4 print(name)
5 print(v)
6 print(i)

输出:

3
1

 

  • 6)endswith

功能:判断是否以xx结尾

参数1:判断值;参数2,3:起始和结束的位置(个数)

技术分享
 1  def endswith(self, suffix, start=None, end=None): # real signature unknown; restored from __doc__
 2         """
 3         S.endswith(suffix[, start[, end]]) -> bool
 4         
 5         Return True if S ends with the specified suffix, False otherwise.
 6         With optional start, test S beginning at that position.
 7         With optional end, stop comparing S at that position.
 8         suffix can also be a tuple of strings to try.
 9         """
10         return False
endswith

例子:

1 name = HeXinddaklfjsl;dfjcnljdajsflajdf
2 v = name.endswith(df)
3 i = name.endswith(n,0,5)
4 print(name)
5 print(v)
6 print(i)

输出:

HeXinddaklfjsl;dfjcnljdajsflajdf
True
True

 

  • 7)expandtabs

功能:找到制表符\t,进行替换(包含前面的值)

技术分享
1 def expandtabs(self, tabsize=8): # real signature unknown; restored from __doc__
2         """
3         S.expandtabs(tabsize=8) -> str
4         
5         Return a copy of S where all tab characters are expanded using spaces.
6         If tabsize is not given, a tab size of 8 characters is assumed.
7         """
8         return ""
expandtabs

例子:

1 name = "al\te\tx\nalex\tuu\tkkk"
2 v = name.expandtabs(5)  #包含前面的值,5个长度
3 print(v)

输出:

al   e    x
alex uu   kkk

 

  • 8)find

功能:找到指定子序列的索引位置,不存在返回-1

技术分享
def find(self, sub, start=None, end=None): # real signature unknown; restored from __doc__
        """
        S.find(sub[, start[, end]]) -> int
        
        Return the lowest index in S where substring sub is found,
        such that sub is contained within S[start:end].  Optional
        arguments start and end are interpreted as in slice notation.
        
        Return -1 on failure.
        """
        return 0
find

例子:

1 name = hexin
2 v = name.find(0)
3 i = name.find(x)
4 print(v)
5 print(i)

输出:

-1
2

 

  • 9)format,%s,format_map

功能:字符串格式化

技术分享
1 def format(*args, **kwargs): # known special case of str.format
2         """
3         S.format(*args, **kwargs) -> str
4         
5         Return a formatted version of S, using substitutions from args and kwargs.
6         The substitutions are identified by braces (‘{‘ and ‘}‘).
7         """
8         pass
format

 

技术分享
1 def format_map(self, mapping): # real signature unknown; restored from __doc__
2         """
3         S.format_map(mapping) -> str
4         
5         Return a formatted version of S, using substitutions from mapping.
6         The substitutions are identified by braces (‘{‘ and ‘}‘).
7         """
8         return ""
format_map

例子:

 1 tpl1 = "我是:%s;年龄:%s;性别:%s" %( hexin,18,man)
 2 print(tpl1)
 3 
 4 tpl2 = "我是:{0};年龄:{1};性别:{2}"
 5 v2 = tpl2.format("李杰",19,都行)
 6 print(v2)
 7 
 8 tpl3 = "我是:{name};年龄:{age};性别:{gender}"
 9 v3 = tpl3.format(name=李杰,age=19,gender=随意)
10 print(v3)
11 
12 tpl4 = "我是:{name};年龄:{age};性别:{gender}"
13 v4 = tpl4.format_map({name:"李杰",age:19,gender:})
14 print(v4)

输出:

我是:hexin;年龄:18;性别:man
我是:李杰;年龄:19;性别:都行
我是:李杰;年龄:19;性别:随意
我是:李杰;年龄:19;性别:中

 

  • 10)isalnum

功能:是否是数字或汉字

技术分享
1 def isalnum(self): # real signature unknown; restored from __doc__
2         """
3         S.isalnum() -> bool
4         
5         Return True if all characters in S are alphanumeric
6         and there is at least one character in S, False otherwise.
7         """
8         return False
isalnum

例子:

1 name = hexin0好
2 v = name.isalnum()
3 print(v)

输出:

True

 

  • 11)isdecimal,isdigit,isnumeric

功能:是否是数字

技术分享
1 def isalnum(self): # real signature unknown; restored from __doc__
2         """
3         S.isalnum() -> bool
4         
5         Return True if all characters in S are alphanumeric
6         and there is at least one character in S, False otherwise.
7         """
8         return False
isalnum
技术分享
1 def isdecimal(self): # real signature unknown; restored from __doc__
2         """
3         S.isdecimal() -> bool
4         
5         Return True if there are only decimal characters in S,
6         False otherwise.
7         """
8         return False
isdecimal
技术分享
1 def isdigit(self): # real signature unknown; restored from __doc__
2         """
3         S.isdigit() -> bool
4         
5         Return True if all characters in S are digits
6         and there is at least one character in S, False otherwise.
7         """
8         return False
isdigit

 

例子:

1 num = 
2 v1 = num.isdecimal() # ‘123‘
3 v2 = num.isdigit()   # ‘123‘,‘②‘
4 v3 = num.isnumeric() # ‘123‘,‘二‘,‘②‘
5 print(v1,v2,v3)

输出:

False False True

 

  • 12)isidentifer

功能:是否是有效的标识符

技术分享
 1 def isidentifier(self): # real signature unknown; restored from __doc__
 2         """
 3         S.isidentifier() -> bool
 4         
 5         Return True if S is a valid identifier according
 6         to the language definition.
 7         
 8         Use keyword.iskeyword() to test for reserved identifiers
 9         such as "def" and "class".
10         """
11         return False
isidentifier

例子:

1 n = 1name
2 u = name
3 v = n.isidentifier()
4 i = u.isidentifier()
5 print(v)
6 print(i)

输出:

False
True

 

  • 13)islower(isupper)

功能:是否全部是小写(大写)

技术分享
1 def islower(self): # real signature unknown; restored from __doc__
2         """
3         S.islower() -> bool
4         
5         Return True if all cased characters in S are lowercase and there is
6         at least one cased character in S, False otherwise.
7         """
8         return False
islower

例子:

1 name = hexin
2 name1 = Hexin
3 v = name.islower()
4 i = name1.islower()
5 print(v)
6 print(i)

输出:

True
False

 

  • 14)isprintable

功能:是否包含隐含的XX(包含\n,\t等不可见字符为False)

技术分享

 

技术分享
1 def isprintable(self): # real signature unknown; restored from __doc__
2         """
3         S.isprintable() -> bool
4         
5         Return True if all characters in S are considered
6         printable in repr() or S is empty, False otherwise.
7         """
8         return False
isprintable

例子:

1 name = hexindas\talj,hexin
2 v = name.isprintable()
3 print(v)

输出:

False

 

  • 15)join

功能:元素拼接

技术分享
1 def join(self, iterable): # real signature unknown; restored from __doc__
2         """
3         S.join(iterable) -> str
4         
5         Return a string which is the concatenation of the strings in the
6         iterable.  The separator between elements is S.
7         """
8         return ""
join

例子:

1 name = hexin
2 
3 v = "_".join(name) # 内部循环每个元素
4 print(v)
5 
6 name_list = [1,2,3,4]
7 v = "+".join(name_list)
8 print(v)

输出:

h_e_x_i_n
1+2+3+4

 

  • 16)rjust,ljust

功能:左右填充,类似center

技术分享
1 def ljust(self, width, fillchar=None): # real signature unknown; restored from __doc__
2         """
3         S.ljust(width[, fillchar]) -> str
4         
5         Return S left-justified in a Unicode string of length width. Padding is
6         done using the specified fill character (default is a space).
7         """
8         return ""
ljust

例子:

1 name = hexin
2 v = name.ljust(14,*)
3 i = name.rjust(6,*)
4 print(v)
5 print(i)

输出

hexin*********
*hexin

 

  • 17)maketrans,translate

功能:创建对应关系,翻译转换

技术分享
 1 def maketrans(self, *args, **kwargs): # real signature unknown
 2         """
 3         Return a translation table usable for str.translate().
 4         
 5         If there is only one argument, it must be a dictionary mapping Unicode
 6         ordinals (integers) or characters to Unicode ordinals, strings or None.
 7         Character keys will be then converted to ordinals.
 8         If there are two arguments, they must be strings of equal length, and
 9         in the resulting dictionary, each character in x will be mapped to the
10         character at the same position in y. If there is a third argument, it
11         must be a string, whose characters will be mapped to None in the result.
12         """
13         pass
maketrans

例子:

1 m = str.maketrans(aeiou,12345) # 对应关系
2 name = "akpsojfasdufasdlkfj8ausdfakjsdfl;kjer09asdf"
3 v = name.translate(m)
4 print(v)

输出:

1kps4jf1sd5f1sdlkfj815sdf1kjsdfl;kj2r091sdf

 

  • 18)partition

功能:分割,保留分割的元素

技术分享
1 def partition(self, sep): # real signature unknown; restored from __doc__
2         """
3         S.partition(sep) -> (head, sep, tail)
4         
5         Search for the separator sep in S, and return the part before it,
6         the separator itself, and the part after it.  If the separator is not
7         found, return S and two empty strings.
8         """
9         pass
partition

例子:

1 content = "9SB6SB6"
2 v = content.partition(SB) # partition
3 print(v)

输出:

(9, SB, 6SB6)

 

  • 19)replace

功能:替换

技术分享
1 def replace(self, old, new, count=None): # real signature unknown; restored from __doc__
2         """
3         S.replace(old, new[, count]) -> str
4         
5         Return a copy of S with all occurrences of substring
6         old replaced by new.  If the optional argument count is
7         given, only the first count occurrences are replaced.
8         """
9         return ""
replace

例子:

1 content = "1SB2SB3SB4"
2 v = content.replace(SB,Love)
3 print(v)
4 v = content.replace(SB,Love,1)
5 print(v)

输出:

1Love2Love3Love4
1Love2SB3SB4

 

  • 20)strip

功能:移除空白,\n,\t, 自定义

技术分享
1 def strip(self, chars=None): # real signature unknown; restored from __doc__
2         """
3         S.strip([chars]) -> str
4         
5         Return a copy of the string S with leading and trailing
6         whitespace removed.
7         If chars is given and not None, remove characters in chars instead.
8         """
9         return ""
strip

 

例子:

1 name = hexin \t
2 v = name.strip() # 空白,\n,\t
3 print(v)

输出:

hexin

 

  • 21)zfill

功能:填充0

技术分享
1 def zfill(self, width): # real signature unknown; restored from __doc__
2         """
3         S.zfill(width) -> str
4         
5         Pad a numeric string S with zeros on the left, to fill a field
6         of the specified width. The string S is never truncated.
7         """
8         return ""
zfill

例子:

1 name = hexin
2 v = name.zfill(20)
3 print(v)

输出:

000000000000000hexin

 

2.整数

类int

  • 1)bit_length

功能:当前整数的二进制表示的最少位数

技术分享
def bit_length(self): # real signature unknown; restored from __doc__
        """
        int.bit_length() -> int
        
        Number of bits necessary to represent self in binary.
        >>> bin(37)
        ‘0b100101‘
        >>> (37).bit_length()
        6
        """
        return 0
bit_length

例子:

age = 4 # 100
print(age.bit_length())

输出:

3

 

  • 2)to_bytes

功能:获取当前数据的字节表示

技术分享
def to_bytes(self, length, byteorder, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
        """
        int.to_bytes(length, byteorder, *, signed=False) -> bytes
        
        Return an array of bytes representing an integer.
        
        The integer is represented using length bytes.  An OverflowError is
        raised if the integer is not representable with the given number of
        bytes.
        
        The byteorder argument determines the byte order used to represent the
        integer.  If byteorder is ‘big‘, the most significant byte is at the
        beginning of the byte array.  If byteorder is ‘little‘, the most
        significant byte is at the end of the byte array.  To request the native
        byte order of the host system, use `sys.byteorder‘ as the byte order value.
        
        The signed keyword-only argument determines whether two‘s complement is
        used to represent the integer.  If signed is False and a negative integer
        is given, an OverflowError is raised.
        """
        pass
to_bytes

例子:

age = 15
v = age.to_bytes(10,byteorder=big)
v = age.to_bytes(10,byteorder=little)
print(v)

输出:

b\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00

 

3.list列表

类list

可变类型

  • 1)append

功能:追加

技术分享
def append(self, p_object): # real signature unknown; restored from __doc__
        """ L.append(object) -> None -- append object to end """
        pass
append

例子:

user_list = [tom,,jack,n] # 可变类型
user_list.append(hex)
print(user_list)

输出

[tom, , jack, n, hex]

 

  • 2)clear

功能:清空

例子:

user_list = [tom,,jack,n] # 可变类型
user_list.clear()
print(user_list)

输出:

[]

 

  • 3)copy

功能:浅拷贝

例子:

user_list = [tom,,jack,n] 
t = user_list.copy()
print(user_list)
print(t)

输出:

[tom, , jack, n]
[tom, , jack, n]

 

  • 4)count

功能:计数

例子:

user_list = [tom,n,,jack,n,n]
t = user_list.count(n)
print(user_list)
print(t)

输出:

[tom, n, , jack, n, n]
3

 

  • 5)extend

功能:扩展原列表

例子:

user_list = [tom,n,,jack,n,n]
user_list.extend(9)
print(user_list)

输出:

[tom, n, , jack, n, n, 9]

 

  • 6)index

功能:查找元素索引,没有报错

例子:

user_list = [tom,n,,jack,n,n]
v = user_list.index(n)
print(v)

输出:

1

 

  • 7)pop

功能:删除并获取元素,索引

例子:

user_list = [tom,n,,jack,n,n]
v = user_list.pop(1)
print(v)
print(user_list)

输出:

n
[tom, , jack, n, n]

 

  • 8)remove

功能:删除,值

例子:

user_list = [tom,n,,jack,n,n]
user_list.remove(n)
print(user_list)

输出:

[tom, , jack, n, n]

 

  • 9)reverse

功能:翻转

例子:

user_list = [tom,n,,jack,n,n]
user_list.reverse()
print(user_list)

输出:

[n, n, jack, , n, tom]

 

  • 10)sort

功能:排序

例子:

num = [11,2,3,6,111]
num.sort()
print(num)
num.sort(reverse=True)
print(num)

输出:

[2, 3, 6, 11, 111]
[111, 11, 6, 3, 2]

 

4.range

  • 1)创建

py2.7:立即生成数字

range(1,11) # 生成 1,23,,4,56.10

 

py3:不会立即生成,只有循环迭代,才一个个生成;

for i in range(1,11): 
    print(i)

for j in range(1,11,2): 
    print(j)

for k in range(10,0,-1): 
    print(k)
1
2
3
4
5
6
7
8
9
10
1
3
5
7
9
10
9
8
7
6
5
4
3
2
1

 

例子

# li = [‘eric‘,‘alex‘,‘tony‘]
# for i in range(0,len(li)):
# ele = li[i]
# print(ele)


li = [‘eric‘,‘alex‘,‘tony‘]
for i in li:
print(i)

# for i in range(0,len(li)):
# print(i+1,li[i])

输出

eric
alex
tony

5.enumerate

功能:额外生成一列有序的数字

例子

li = [eric,alex,tony]
for i,ele in enumerate(li,1):
    print(i,ele)

#1 eric
#2 alex
#3 tony
li = [eric,alex,tony]
for i,ele in enumerate(li,1):
    print(i,ele)

v = input(请输入商品序号:)
v = int(v)
item = li[v-1]
print(item)


#1 eric
#2 alex
#3 tony
#请输入商品序号:1
#eric

 

6.tuple元组

不可被修改类型,儿子不可被修改,孙子可以

  • 1)创建
user_tuple = (‘hex‘,‘eric‘,‘seven‘,‘hex‘)
  • 2)count

功能:获取个数

user_tuple = (hex,eric,seven,hex)
v = user_tuple.count(hex)
print(v)

#2
  • 3)index

功能:获取值得第一个索引位置

user_tuple = (hex,eric,seven,hex)
v = user_tuple.index(hex)
print(v)

#0

 

  • 4)注意:元组最后加逗号

例子

li = (hx,)
print(li)

 

  • 5)本身不可修改,但是孙子可以

user_tuple = (‘alex‘,‘eric‘,‘seven‘,[‘1‘,‘2‘,‘3‘],‘a4‘)
# user_tuple[0] = 123 执行错误
# user_tuple[3] = [11,22,33] 执行错误
user_tuple[3][1] = ‘0‘
print(user_tuple)

 

7.dict

可变类型

  • 1)clear

功能:清空

dic = {k1:v1,k2:v2}
dic.clear()
print(dic)

 

  • 2)copy

功能:浅拷贝

dic = {k1:v1,k2:v2}
v = dic.copy()
print(v)

 

  • 3)get

功能:根据key获取指定value,不存在不报错

dic = {k1:v1,k2:v2}
v = dic.get(k1111,1111)
print(v)

 

  • 4)pop

功能:删除并获取对应的value值

# dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}
# v = dic.pop(‘k1‘)
# print(dic)
# print(v)

输出:

{k2: v2}
v1

 

  • 5)popitem

功能:随机删除键值对,并获取到删除的键值

dic = {k1:v1,k2:v2}
v = dic.popitem()
print(dic)
print(v)

输出:

{k1: v1}
(k2, v2)

 

dic = {k1:v1,k2:v2}
k,v = dic.popitem() # (‘k2‘, ‘v2‘)
print(dic)
print(k,v)

输出:

{k2: v2}
k1 v1

 

dic = {k1:v1,k2:v2}
v = dic.popitem() # (‘k2‘, ‘v2‘)
print(dic)
print(v[0],v[1])

输出:

{k1: v1}
k2 v2

 

  • 6)setdefault

功能:增加,如果不存在即删除

dic = {k1:v1,k2:v2}
dic.setdefault(k3,v3)
print(dic)
dic.setdefault(k1,1111111)
print(dic)

输出:

{k2: v2, k1: v1, k3: v3}
{k2: v2, k1: v1, k3: v3}

 

  • 7)update

功能:批量增加或修改

dic = {k1:v1,k2:v2}
dic.update({k3:v3,k1:v24})
print(dic)

输出:

{k1: v24, k2: v2, k3: v3}

 

  • 8)fromkeys

功能:从序列键和值设置为value来创建一个新的字典。

例子:

dic = dict.fromkeys([k1,k2,k3],123)
dic[k1] = asdfjasldkf
print(dic)

输出:

{k2: 123, k1: asdfjasldkf, k3: 123}

 

8.set

集合,不可重复列表,可变类型。

 

  • 1)创建
s1 = {"alex",eric,tony}
print(type(s1))
print(s1)

输出:

<class set>
{alex, eric, tony}

 

  • 2)difference

功能:输出s1中存在,s2中不存在的值

s1 = {"alex",eric,tony,ii}
s2 = {"alex",eric,tony,hexin}
v = s1.difference(s2)
print(v)

 输出:

{ii}

 

  • 3)difference_update

功能:s1中存在,s2中不存在,然后对s1清空,然后在重新赋值

s1 = {"alex",eric,tony,ii}
s2 = {"alex",eric,tony,hexin}
s1.difference_update(s2)
print(s1)

输出:

{ii}

 

  • 4)symmetric_difference

功能:s1中存在,s2中不存在的值及s2中存在,s1中不存在的值

s1 = {"alex",eric,tony,ii}
s2 = {"alex",eric,tony,hexin}
v = s1.symmetric_difference(s2)
print(v)
{ii, hexin}

 

  • 5)intersection

功能:交集

s1 = {"alex",eric,tony,ii}
s2 = {"alex",eric,tony,hexin}
v = s1.intersection(s2)
print(v)

输出:

{eric, alex, tony}

 

  • 6)union

功能:并集

s1 = {"alex",eric,tony,ii}
s2 = {"alex",eric,tony,hexin}
v = s1.union(s2)
print(v)

输出:

{alex, hexin, eric, ii, tony}

 

  • 7)discard

功能:移除

s1 = {"alex",eric,tony,ii}
s2 = {"alex",eric,tony,hexin}
s1.discard(alex)
print(s1)

输出:

{eric, tony, ii}

 

  • 8)update

功能:添加

s1 = {"alex",eric,tony,李泉,李泉11}
s1.update({alex,123123,fff})
print(s1)

输出:

{fff, 李泉, 123123, tony, alex, eric, 李泉11}

 

【python的基本数据类型及进制扫盲】