Python中的基本概念:列表和元组
Python中的数据类型主要分为两大类:简单的单一数据类型,比如整型、浮点型和布尔型;负责的容器数据类型,也就是包含多数据类型的一个复合数据,诸如列表list、元组tuple、字典dict、集合set、字符串str等。
列表
列表是有序集合,没有固定大小,能够保存任意数量任意类型的 Python 对象,语法为 [元素1, 元素2, ..., 元素n] 。
1. 关键点是「中括号 []」和「逗号 ,」
2. 中括号 把所有元素绑在一起
3. 逗号 将每个元素一一分开
列表可以用函数或者推导式来创建
x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]
print(x, type(x))
x = [[0 for col in range(3)] for row in range(4)]
print(x, type(x))
注意:
由于list的元素可以是任何对象,因此列表中所保存的是对象的指针。即使保存一个简单的[1,2,3] ,也有3个指针和3个整数对象。
x = [a] * 4 操作中,只是创建4个指向list的引用,所以一旦a 改变, x 中4个a 也会随之改变。
x = [[0] * 3] * 4
print(x, type(x))
x[0][0] = 1
print(x, type(x))
注意:列表不像元组,列表内容可更改 (mutable),因此附加 ( append , extend )、插入 ( insert )、删除 ( remove , pop ) 这些操作都可用。
list.append(obj) 在列表末尾添加新的对象,只接受一个参数,参数可以是任何数据类型,被追加的元素在 list中保持着原结构类型;
list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表);
list.insert(index, obj) 在编号 index 位置前插入obj;
list.remove(obj) 移除列表中某个值的第一个匹配项;
remove 和 pop 都可以删除元素,前者是指定具体要删除的元素,后者是指定一个索引;
del var1[, var2 ……] 删除单个或多个对象。
如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del 语句;如果你要在删除元素后还能继续使用它,就使用方法pop() 。
重点学习一下:复制列表中的所有元素(浅拷贝)——:
list1 = [123, 456, 789, 213]
list2 = list1
list3 = list1[:]
print(list2)
print(list3)
list1.sort()
print(list2)
print(list3)
list1 = [[123, 456], [789, 213]]
list2 = list1
list3 = list1[:]
print(list2)
print(list3)
list1[0][0] = 111
print(list2)
print(list3)
元组
「元组」定义语法为: (元素1, 元素2, ..., 元素n)
1. 小括号把所有元素绑在一起
2. 逗号将每个元素一一分开
1. Python 的元组与列表类似,不同之处在于tuple被创建后就不能对其进行修改,类似字符串。
2. 元组使用小括号,列表使用方括号。
# 元组和列表类似,元组被创建后不可更改
t1 = (1,10.31,'python')
t2 = 1,103.31,'python'
print(t1,type(t1),' | ',t2,type(t2))
1. 创建元组可以用小括号 (),也可以什么都不用,为了可读性,建议还是用 ()。
2. 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
# 元组中只包含一个元素时,元素后要添加逗号,不然误以为小括号也是元组元素
t00 = 1,
print(t00,type(t00))
元组相关的操作符
比较操作符、逻辑操作符、连接操作符 +、重复操作符 *、成员关系操作符 in 、not in
'''
索引,获取元组的单个元素
切片,获取一组元素
'''
week = ('Monday','Tuesday','Thursday','Friday')
print(week[0][0],week[0][1])
week = week[:2]+('Wednesday',)+week[2:]
print(week)
# 元组的重复操作符
t12 = (2,3,4,5)
t23 = t12*2
print(t23)
元组大小和内容都不可更改,因此只有 count 和 index 两种方法。
'''
元组的大小不可更改
count:记录某个元素在该元组中出现的次数
index:元素在元组中出现的索引
'''
print(t23.count(3))
print(t23.index(4))
如果你只想要元组其中几个元素,用通配符「*」,英文叫 wildcard,在计算机语言中代表一个或多个元素。
# 解压元组,通配符[*]表示一个或者多个元组中的元素
a,b,*rt,d = t23
print(a,' * ',b,' * ',*rt,' * ',d)
print((1,2)*2,type((1,2)*2))
print((1,)*2,type((1,)*2))
print((1)*2,type((1)*2))
字符串
1. Python 中字符串被定义为引号之间的字符集合。
2. Python 支持使用成对的 单引号 或 双引号。
如果字符串中需要出现单引号或双引号,可以使用转义符号\ 对字符串中的符号进行转义。
print(type('5'+'8'))
# str中的转义字符位 \,可以对特殊字符进行转义
print('let\'s go')
print("let's go")
python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
# 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)
字符串的切片与拼接
1. 类似于元组具有不可修改性
2. 从 0 开始 (和 C 一样)
3. 切片通常写成 start:end 这种形式,包括「start 索引」对应的元素,不包括「end 索引」对应的元素。
4. 索引值可正可负,正索引从 0 开始,从左往右;负索引从 -1 开始,从右往左。使用负数索引时,会从最后一个元素开始计数。最后一个元素的位置编号是 -1。
字符串的常用内置方法有很多,比如capitalize()、lower()、upper()、swapcase()等等,这里取几个不常见的看一下。
1. ljust(width[, fillchar]) 返回一个原字符串左对齐,并使用fillchar (默认空格)填充至长度width 的新字符串。
2. rjust(width[, fillchar]) 返回一个原字符串右对齐,并使用fillchar (默认空格)填充至长度width 的新字符串。
'''
ljust(width[,fillchar])
rjust(width,[,fillchar])
返回一个原字符串左/右对齐,用fillchar填充
'''
str4 = '1101'
print(str4.ljust(8,'0'))
print(str4.rjust(8,'0'))
1. lstrip([chars]) 截掉字符串左边的空格或指定字符。
2. rstrip([chars]) 删除字符串末尾的空格或指定字符。
3. strip([chars]) 在字符串上执行lstrip() 和rstrip() 。
'''
lstrip([char])、rstrip([char])、strip([char])
删除字符串前后的空格或者指定字符
'''
str5 = ' I love Lsgroup '
print(str5.lstrip())
print(str5.rstrip())
print(str5.strip())
split(str="", num) 不带参数默认是以空格为分隔符切片字符串,如果num 参数有设置,则仅分隔num 个子字符串,返回切片后的子字符串拼接的列表。
# split分割保存
u = 'www.baidu.com.cn'
u1,u2,u3 = u.split('.',2)
print(u1,'\n',u2,'\n',u3)