云学python (第4章朝思暮想是列表对象、元组与字符串对象、词典对象)《vamei-从Python开始学编程》 笔记

云学python (第4章朝思暮想是列表对象、元组与字符串对象、词典对象)《vamei-从Python开始学编程》 笔记,第1张

4.3那些年,错过的对象

 

.列表对象

数据容器中的列表,它是一个类,用内置函数可以找到类的名字:

>>> a = [1,2,3]
>>> print(a)
___________
[1, 2, 3]

根据返回的结果,a属于list(列表)类型。


所谓的类型就是对象所属的类的名字。


每个列表都属于这个list类。


这个类是Python自带的,已经提前定义好的,所以称为内置类。


新建一个表实际上是在创建list类的一个对象。


还可以用其他两个内置函数来进一步调查类的信息:dir()help()。


函数dir()用来查询一个类或者对象的所有属性。


你可以尝试一下:

>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']

>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']


#dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。


help()函数可以查询函数的说明文档,还可以用于显示类的说明文档。


>>>help(list)
______________
Help on class list in module builtins:

class list(object)
 |  list(iterable=(), /)
 |  
 |  Built-in mutable sequence.
 |  
 |  If no argument is given, the constructor creates a new empty list.
 |  The argument must be an iterable if specified.
 |  
 |  Methods defined here:
 |  
 |  __add__(self, value, /)
 |      Return self+value.
 |  
 |  __contains__(self, key, /)
 |      Return key in self.
......
sort(self, /, *, key=None, reverse=False)
 |      Sort the list in ascending order and return None.
 |      
 |      The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
 |      order of two equal elements is maintained).
 |      
 |      If a key function is given, apply it once to each list item and sort them,
 |      ascending or descending, according to their function values.
 |      
 |      The reverse flag can be set to sort in descending order.
 |  
 |  ----------------------------------------------------------------------
 |  Static methods defined here:
 |  
 |  __new__(*args, **kwargs) from builtins.type
 |      Create and return a new object.  See help(type) for accurate signature.
 |  
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |  
 |  __hash__ = None
(END)

返回的不但有关于list类的描述,还简略说明了它的各个属性。


顺便提一下,制作类的说明文档的方式,与制作函数说明文档类似,只需在类定义下用多行字符串加入自己想要的说明就可以了: 

class HelpDemo(object):
    """
    This is a demo for using help() on a class
    
    """

pass

print(help(HelpDemo))
_______________________


Help on class HelpDemo in module __main__:

class HelpDemo(builtins.object)
 |  This is a demo for using help() on a class
 |  
 |  Data descriptors defined here:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)
(END)

程序中的passPython的一个特殊关键字,用于说明在该语法结构 中“什么都不做”。


这个关键字保持了程序结构的完整性。


下面是一些 list的方法,可以返回列表的信息:

>>>a [1, 2, 3, 5, 9.0, "Good", -1, True, False, "Bye"]

>>>a.count(5)

>>>a.index(3)

#计数,看总共有多少个元素5

#查询元素3第一次出现时的下标

有些方法还允许对列表进行修改 *** 作:

>>>a.append(6)

#在列表的最后增添一个新元素6

>>>a.sort()

#排序

>>>a.reverse()

#颠倒次序

>>>a.pop()

#去除最后一个元素,并将该元素返回。


>>>a.remove(2)

#去除第一次出现的元素2

>>>a.insert(0^9)

#在下标为。


的位置插入9

>>>a.clear()

#清空列表

通过对方法的调用,列表的功能大为增强。


2.元组与字符串对象

元组与列表一样,都是序列。


但元组不能变更内容。


因此,元组只能进行查询 *** 作,不能进行修改 *** 作:

>>>a =(1, 3, 5)

>>>a.count(5)

#计数,看总共有多少个元素5

>>>a.index(3)

#查询元素3第一次出现时的下标

字符串是特殊的元组,因此可以执行元组的方法:

>>> a="abc"
>>> a.index("c")
2

尽管字符串是元组的一种,但字符串string)有一些方法能改变字符串。


这听起来似乎违背了元组的不可变性。


但这些方法并不是修改字符串对象,而是删除原有字符串,再建立一个新的字符串。


下面总结了字符串对象的方法。


str为一个字符串,substr的一个子字符串。


s为一个序列,它的元素都是字符串。


width为一个整数,用于说明新生成字符串的宽度。


这些方法经常用于字符串的处理。


>>>str "Hello World!

>>>sub = "World"

>>>str.count(sub)

#返回:substr中出现的次数

>>>str.find(sub)

#返回:从左开始,查找substr中第一次出现的位置。


#如果str中不包含sub,返回-1

>>>str.index(sub)

#返回:从左开始,查找substr中第一次出现的位置。


#如果str中不包含sub,举出错误

>>>str.rfind(sub)

#返回:从右开始,查找substr中第一次出现的位置

#如果str中不包含sub,返回-1

>>>str.rindex(sub)

#返回:从右开始,查找substr中第一次出现的位置

#如果str中不包含sub,举出错误

>>>str.isalnum()

#返回:True,如果所有的字符都是字母或数字

>>>str.isalpha()

#返回:True,如果所有的字符都是字母

>>>str.isdigit()

#返回:True,如果所有的字符都是数字

>>>str.istitle()

#返回:True,如果所有的词的首字母都是大写

>>>str.isspace()

#返回:True,如果所有的字符都是空格

>>>str.islower()

#返回:True,如果所有的字符都是小写字母

>>>str.isupper()

#返回:True,如果所有的字符都是大写字母

>>>str.splitz([sep,[max]])

 #返回:从左开始,以空格为分隔符(separator),

#将str分割为多个子字符串,总共分割max次。


#将所得的子字符串放在一个表中返回。


可以以

str.split("/')的方式使用其他分隔符

>>>str.rsplit([sep, [max]]) 

[max]]) #返回:从右开始,以空格为分隔符(separator),

#将,切分割为多个子字符串,总共分割max次。


#将所得的子字符串放在一个表中返回。


可以以

str.rsplitC'j")的方式使用其他分隔符

>>>str.join(s)

#返回:将s中的元素,以str为分隔符,

#合并成为一个字符串。


>>>str.strip([sub])

#返回:去掉字符串开头和结尾的空格。


#也可以提供参数sub,去掉位于字符串开头和结尾的sub

>>>str.capitalize()

#返回:将str第一个字母大写

>>>str.lower()

#返回:将str全部字母改为小写

>>>str.upper()

#返回:将str全部字母改为大写

>>>str.swapcase()

#返回:将str大写字母改为小写,小写字母改为大写

>>>str.title()

#返回:将str的每个词(以空格分隔)的首字母

#大写

>>>str.center(width)

#返回:长度为width的字符串,将原字符串放入 #该字符串中心,其他空余位置为空格。


>>>str. replace (sub new_sub) 返回:用一个新的字符串 new_sub 替换 str 的 sub 

>>>str.ljust(width) #返回:长度为width的字符串,将原字符串左对齐放入该字符串,其他空余位置为空格。


>>>str.rjust(width) #返回:长度为width的字符串,将原字符串右对齐放入 #该字符串,其他空余位置为空格。


.词典对象

词典同样是一个类:

>>> example_dict ={"a":1,"b":2}
>>> type(example_dict)

我们可以通过词典的keys()方法,来循环遍历每个元素的键:

example_dict ={"a":1,"b":2}
for k in example_dict.keys():
    print(example_dict[k])
_____________________________
1
2

通过values()方法,可以遍历每个元素的值;或者用items()方法,直接遍历每个元素:

example_dict ={"a":1,"b":2}
for v in example_dict.values():
    print(v)
for k,v in example_dict.items():
    print(k,v)
_______________________________
1
2
a 1
b 2

我们也可以用clear()方法,清空整个词典:

example_dict ={"a":1,"b":2}
example_dict. clear()
print(example_dict)
______________________
{}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/568460.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存