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

转载一个看的比较好的帖子来介绍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 = True
while 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的作用是将两个列表对应项组成一个元组,多余的忽略。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值