Python基础02

折月煮酒 提交于 2019-11-26 07:21:39

1.列表

1.1基本操作(创建,append( ),pop( ) ,del( ), 拷贝)

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list1 = ['Google', 'Runoob', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];

与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。
访问列表中的值
使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示:

list1 = ['Google', 'Runoob', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];
print ("list1[0]: ", list1[0])
print ("list2[1:5]: ", list2[1:5])

运行实例 »
以上实例输出结果:

list1[0]:  Google
list2[1:5]:  [2, 3, 4, 5]

更新列表
你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示:

list = ['Google', 'Runoob', 1997, 2000]
print ("第三个元素为 : ", list[2])
list[2] = 2001
print ("更新后的第三个元素为 : ", list[2])

注意:我们会在接下来的章节讨论append()方法的使用

以上实例输出结果:

第三个元素为 :  1997
更新后的第三个元素为 :  2001

删除列表元素
可以使用 del 语句来删除列表的的元素,如下实例:

list = ['Google', 'Runoob', 1997, 2000]
print ("原始列表 : ", list)
del list[2]
print ("删除第三个元素 : ", list)

以上实例输出结果:

原始列表 :  ['Google', 'Runoob', 1997, 2000]
删除第三个元素 :  ['Google', 'Runoob', 2000]

1.2列表相关方法

Python包含以下函数:

函数名 函数介绍
len(list) 列表元素个数
max(list) 返回列表元素最大值
min(list) 返回列表元素最小值
list(seq) 将元组转换为列表

Python包含以下方法:

方法名 方法介绍
list.append(obj) 在列表末尾添加新的对象
list.count(obj) 统计某个元素在列表中出现的次数
list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj) 将对象插入列表
list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj) 移除列表中某个值的第一个匹配项
list.reverse() 反向列表中元素
ist.sort( key=None, reverse=False) 对原列表进行排序
list.clear() 清空列表
list.copy() 复制列表

2.元组

2.1基本操作(创建及不可变性)

Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

>>>tup1 = ('Google', 'Runoob', 1997, 2000);
>>> tup2 = (1, 2, 3, 4, 5 );
>>> tup3 = "a", "b", "c", "d";   #  不需要括号也可以
>>> type(tup3)
<class 'tuple'>

创建空元组

tup1 = ();
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:

实例(Python 3.0+)

tup1 = (50)
type(tup1) # 不加逗号,类型为整型
<class ‘int’>

tup1 = (50,)
type(tup1) # 加上逗号,类型为元组
<class ‘tuple’>
元组与字符串类似,下标索引从0开始,可以进行截取,组合等。

访问元组
元组可以使用下标索引来访问元组中的值,如下实例:

tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
 
print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])

以上实例输出结果:

tup1[0]:  Google
tup2[1:5]:  (2, 3, 4, 5)

修改元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:

tup1 = (12, 34.56);
tup2 = ('abc', 'xyz')

以下修改元组元素操作是非法的。

tup1[0] = 100

创建一个新的元组

tup3 = tup1 + tup2;
print (tup3)

以上实例输出结果:

(12, 34.56, 'abc', 'xyz')

删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:

tup = ('Google', 'Runoob', 1997, 2000)
print (tup)
del tup;
print ("删除后的元组 tup : ")
print (tup)

以上实例元组被删除后,输出变量会有异常信息,输出如下所示:

删除后的元组 tup :

Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print (tup)
NameError: name 'tup' is not defined

3.string字符串

3.1定义及基本操作(+,*,读取方式)

一串字符串(String)是 字符(Characters) 的 序列(Sequence)。基本上,字符串就是一
串词汇。
你将会在几乎所有你撰写的 Python 程序中使用字符串,所以对下面的部分你要多上点心。
单引号
你可以使用单引号来指定字符串,例如 '将我这样框进来''Quote me on this'
所有引号内的空间,诸如空格与制表符,都将按原样保留。
双引号
被双引号包括的字符串和被单引号括起的字符串其工作机制完全相同。例如 "你的名字是?"
"What's your name?"
三引号
你可以通过使用三个引号—— “”" 或 ‘’’ 来指定多行字符串。你可以在三引号之间自由地
使用单引号与双引号。来看看这个例子:

    '''这是一段多行字符串。这是它的第一行。
    This is the second line.
    "What's your name?," I asked.
    He said "Bond, James Bond."
    '''

字符串是不可变的
这意味着一旦你创造了一串字符串,你就不能再改变它。尽管这看起来像是一件坏事,但实
际上并非如此。我们将会在稍后展现的多个程序中看到为何这一点不是一个限制。
针对 C/C++ 程序员的提示
Python 中没有单独的 char 数据类型。它并非切实必要,并且我相信你不会想念它的。
针对 Perl/PHP 程序员的提示
记住单引号括起的字符串和双引号括起的字符串是一样的——它们不存在任何区别。

3.2字符串相关方法

Python 的字符串内建函数
Python 的字符串常用内建函数如下:

方法名 方法描述
capitalize() 将字符串的第一个字符转换为大写
center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
bytes.decode(encoding=“utf-8”, errors=“strict”) Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
encode(encoding=‘UTF-8’,errors=‘strict’) 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
endswith(suffix, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常.
isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
isalpha() 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
isdigit() 如果字符串只包含数字则返回 True 否则返回 False…
islower() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False
isspace() 如果字符串中只包含空白,则返回 True,否则返回 False.
istitle() 如果字符串是标题化的(见 title())则返回 True,否则返回 False
isupper() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
len(string) 返回字符串长度
ljust(width[, fillchar]) 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
lower() 转换字符串中所有大写字符为小写.
lstrip() 截掉字符串左边的空格或指定字符。

4.字符串格式化问题

有时候我们会想要从其他信息中构建字符串。这正是 format() 方法大有用武之地的地方。
将以下内容保存为文件 str_format.py :

    age = 20
    name = 'Swaroop'
    print('{0} was {1} years old when he wrote this book'.format(name, age))
    print('Why is {0} playing with that python?'.format(name))

输出:

$ python str_format.py
Swaroop was 20 years old when he wrote this book
Why is Swaroop playing with that python?

它是如何工作的
一个字符串可以使用某些特定的格式(Specification),随后, format 方法将被调用,使用
这一方法中与之相应的参数替换这些格式。
在这里要注意我们第一次应用这一方法的地方,此处 {0} 对应的是变量 name ,它是该格式
化方法中的第一个参数。与之类似,第二个格式 {1} 对应的是变量 age ,它是格式化方法
中的第二个参数。请注意,Python 从 0 开始计数,这意味着索引中的第一位是 0,第二位是
1,以此类推。我们可以通过联立字符串来达到相同的效果:

    name + 'is' +str(age) + 'years old'

但这样实现是很丑陋的,而且也容易出错。其次,转换至字符串的工作将由 format 方法自
动完成,而不是如这般需要明确转换至字符串。再次,当使用 format 方法时,我们可以直
接改动文字而不必与变量打交道,反之亦然。
同时还应注意数字只是一个可选选项,所以你同样可以写成:

age = 20
name = 'Swaroop'
print('{} was {} years old when he wrote this book'.format(name, age))
print('Why is {} playing with that python?'.format(name))

这样做同样能得到与前面的程序一样的输出结果。
Python 中 format 方法所做的事情便是将每个参数值替换至格式所在的位置。这之中可以有
更详细的格式,例如:
对于浮点数 ‘0.333’ 保留小数点(.)后三位

print('{0:.3f}'.format(1.0/3))

使用下划线填充文本,并保持文字处于中间位置
使用 (^) 定义 'hello’字符串长度为 11

print('{0:_^11}'.format('hello'))

基于关键词输出 ‘Swaroop wrote A Byte of Python’

print('{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python'))

输出:

0.333
___hello___
Swaroop wrote A Byte of Python

由于我们正在讨论格式问题,就要注意 print 总是会以一个不可见的“新一行”字符( \n )
结尾,因此重复调用 print 将会在相互独立的一行中分别打印。为防止打印过程中出现这一
换行符,你可以通过 end 指定其应以空白结尾:

print('a', end='')
print('b', end='')

输出结果如下:

ab

或者你通过 end 指定以空格结尾:

print('a', end=' ')
print('b', end=' ')
print('c')

输出结果如下:

a b c
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!