Python之列表,元组,字符串(4)

来源:互联网 发布:网络机柜出厂检验报告 编辑:程序博客网 时间:2024/06/18 07:56

转载一个看的比较好的帖子来介绍python的数据类型
列表,字符串,字典

下面写的内容为以上转载文章中没有的补充内容。

列表

  • 列表都可以存放一些什么东西?
    Python的列表就是一个大仓库,Ta可以存放我们学过的任何一种数据类型。
mix = [1,'小仙女',3.14,[1,2,3]]
  • append()和extend()的区别?
    append()方法是将参数作为一个元素增加到列表的末尾。
    extend()方法是将参数作为一个列表去扩展列表的末尾。
>>> name = ['F', 'i', 's', 'h']>>> name.append('C')>>> name['F', 'i', 's', 'h', 'C']>>> name.extend(['.', 'c'])>>> name['F', 'i', 's', 'h', 'C', '.', 'c']>>> name.append(['o', 'm'])>>> name['F', 'i', 's', 'h', 'C', '.', 'c', ['o', 'm']]
  • 再介绍一个删除列表元素的,除了remove(), del 也可以删除元素,他不是一个函数方法。
del name[1]  1为要删除的元素位置

列表分片(slice)

一次获取列表的多个元素。

>>> list1 = [1, 3, 2, 9, 7, 8]>>> list1[2:5][2,9,7]
  • list1[0]和list1[0:1]的区别?
    list1[0]返回的是第0个元素的, list1[0:1]返回的是只含有第0个元素的列表

  • 我们可以利用分片完成列表的拷贝 list2 = list1[:],那事实上可不可以写成list2 = list1更加简洁呢?
    不可以!!!
    举个例子会明白些

>>> list1 = [1, 3, 2, 9, 7, 8]>>> list2 = list1[:]>>> list2[1, 3, 2, 9, 7, 8]>>> list3 = list1>>> list3[1, 3, 2, 9, 7, 8]

看上去貌似一样?我们现在做一下修改,看看

>>> list1.sort()>>> list1[1, 2, 3, 7, 8, 9]

此时list1已经做了修改,下面看看list2 和 list3 有什么变化

>>> list2[1, 3, 2, 9, 7, 8]>>> list3[1, 2, 3, 7, 8, 9]

这里写图片描述

在介绍两个内置方法:copy() 和 clear()
copy的方法和使用切片拷贝是一样的。

>>> list2 = list1.copy()>>> list2[1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]

clear 用于清空列表的元素,注意,清空完后列表还在哦,只是变成了一个空列表。

>>> list2.clear()>>> list2[]

列表推导式,列表解析(list comprehensions)

看表达式

>>> [ i*i for i in range(10) ]

会打印什么内容呢

>>> [i*i for i in range(10)][0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

居然分别打印了0到9各个数的平方,然后还放在列表里面了有木有!

Ta是一个非常灵活的工具,可用来动态的创建列表~
语法: [和A有关的表达式 for A in B] 例如:

>>> list1 = [x**2 for x in range(10)]>>> list1[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

相当于

list1 = []for x in range(10):    list1.append(x**2)

元组

  • 列表: 一个大仓库,你可以随时往里添加和删除任何东西。
  • 元组:封闭的列表,一旦定义就不可改变。不可添加删除或修改。

  • 在列表的许多内置方法中,只有两个元组可以使用。分别是 count() and index().

  • 在创建元组时,逗号是必不可少的,可以没有小括号。在什么情况下逗号和小括号都要存在,缺一不可呢?

在拼接只有一个元素的元组的时候。

>>> temp = (‘小仙女’, ‘黑夜’, ‘迷途’, ‘小布丁’)# 如果我想在“黑夜”和“迷途”之间插入“怡静”,我们应该:>>> temp = temp[:2] + (‘怡静’,) + temp[2:]

字符串

字符串的内置方法

先转载一个小甲鱼网站上的字符串的方法及注释~
字符串的方法及注释
字符串和元组一样封闭,也是一旦定义了不能随意的改变其中的元素。我们用字符串的内置方法实际上是生成了一个新的字符串,原来的字符串不会变!!!!!

关于字符串的几个易错小问题~~

  • file = open(’C:\windows\temp\readme.txt’, ‘r’)表示已只读方式打开 ‘C:\windows\temp\readme.txt’ 这个文本文件,但事实上这个语句会报错,知道为什么嘛?

  • solution: 会报错是因为在字符串中,我们约定 ‘\t’ and ‘\r’ 表示Tab 和 回车符,因此并不会按照我们计划的路径去打开文件。Python给了我们解决的办法,用原始字符串,在前面加一个’r’就可以啦~

>>> file1 = open(r'C:\windows\temp\readme.txt', 'r')

字符串的格式化

像上面一样,转载一个字符串格式化符号。
字符串格式化符号

  • 使用格式化format方法时它有两个参数,一个是位置参数
>>> "{0} love {1}.{2}".format("I", "FishC", "com")'I love FishC.com'
  • 在格式化输出结果的时候,和C语言用逗号 ‘,’ 不同的是,Python 用 ‘%’符号。举个例子
'%c %c %c' % (97,98,99)'a b c'前面字符串内的括号照常打印出来,后面要格式化输出的内容必须要用小括号括起来,并且用逗号隔开!!

另一个是关键字参数

>>> "{a} love {b}.{c}".format(a="I", b="FishC", c="com")'I love FishC.com'

出两个小问题:

1.猜猜下面会打印什么呢?

>>> "{{1}}".format("不打印", "打印")solution:'{1}'

解释:这个就好比 Python 中的转义字符一样 print('//'),就会打印出 ‘/’. 这个就是用花括号来转义花括号。花括号既然已经被解释了,它不在代表位置参数 ‘0’ 了。

  1. 想要显示Pi=3.14,format前面应该怎么写呢?
>>> '{}{}'.format('Pi = ', 3.1415)solution:'{0}{1:.2f}'.format('Pi = ', 3.1415)'Pi = 3.14'

下面举一个简单的编程例子。

  • 编写一个进制转换程序。二进制用bin()这个内置函数。
Q = Truewhile Q:    num = input('请输入一个整数(输入Q结束程序):')    if num != 'Q':        num = int(num)        print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))        print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))        print('十进制 -> 二进制 : %d -> ' % num, bin(num))    else:        Q = False

序列!!!对列表,元组,字符串的总结及对比!!

列表、元组和字符串的共同点:

  1. 都可以通过索引得到每一个元素.
  2. 默认索引值总是从0开始.
  3. 可以通过分片的方法得到一个范围内的元素的集合.
  4. 有很多共同的操作符(重复操作符(*)、拼接操作符(+)、成员关系操作符(in or not in)).

    迭代的概念:所谓迭代,是重复反馈过程的活动,其目的通常是为了接近或到达所需的目标或结果。每一次对过程的重复称为一次‘迭代’,而每一次迭代得到的结果会被当成下一次迭代的初始值。

举两个内置方法:
enumerate(): 必须要在前面加上list,否则返回的是迭代器对象,使用reversed()也是如此。

a = [1,3,5,7,32,5,6,7]print(list(enumerate(a)))-[(0, 1), (1, 3), (2, 5), (3, 7), (4, 32), (5, 5), (6, 6), (7, 7)]它的作用是将列表里的每个元素添加了index,并且以元组的形式呈现。

zip:

a = [1,3,5,7,32,5,6,7]b = [4,2,5,7,8]print(list(zip(a,b)))-[(1, 4), (3, 2), (5, 5), (7, 7), (32, 8)]zip的作用是将两个列表对应项组成一个元组,多余的忽略。
原创粉丝点击