【Hello Python World】Class Notes of Week 2
2018-03-12 12:29
465 查看
列表 (3.14 update)
1.数组下标错误会抛出异常(与C++不同)
2.一个list里可以有不同的数据结构
3.插入方法
4.删除方法
第一种方法:pop(),有返回值
第二种方法:del,没有返回值
第三种方法:remove(),没有返回值,而且会抛出异常
5.操作方法
用sort()和sorted()从小到大排序
翻转列表reverse()
求长度len()
6.列表的数据处理
求和sum()和范围函数range()
求极值min()和max()
7.通过列表解析来生成列表
8.列表切片
9.列表复制辨析
片面地复制:用=
全面地复制:new_list = list[:]
10.元组:只读的列表,被阉割了列表的编辑操作
11.题外话:如何使print()不换行?
1.数组下标错误会抛出异常(与
2.一个
第一种方法:
第二种方法:
为什么del的用法不是
因为
第三种方法:
当我们不知道列表里的某个值的元素的下标是什么,但是又想删除的时候,就使用
用
如果是不同类型的数据放在同一个列表里面排序,结果会怎么样呢?
翻转列表
求长度
像
同理,前面讲到的
但是字符串里面没有
求和
注意:
1.
2.
求极值
负数呢?比如求倒数的四个数的和:
又比如从头开始取,直到倒数第二个(也就是除了最后一个)
冒号两端两个数字都可以缺省:
注意:切片是一个独立于原列表的新列表:
片面地复制:用
这个例子说明了Python在列表复制时使用·
注意:在Python中单个变量的复制就不是换名了:
全面地复制:
想对元组动手?那就只能对整体下手:
11.题外话:如何使
1.数组下标错误会抛出异常(与C++不同)
2.一个list里可以有不同的数据结构
3.插入方法
4.删除方法
第一种方法:pop(),有返回值
第二种方法:del,没有返回值
第三种方法:remove(),没有返回值,而且会抛出异常
5.操作方法
用sort()和sorted()从小到大排序
翻转列表reverse()
求长度len()
6.列表的数据处理
求和sum()和范围函数range()
求极值min()和max()
7.通过列表解析来生成列表
8.列表切片
9.列表复制辨析
片面地复制:用=
全面地复制:new_list = list[:]
10.元组:只读的列表,被阉割了列表的编辑操作
11.题外话:如何使print()不换行?
列表 (3.14 update)
1.数组下标错误会抛出异常(与C++
不同)
li = [1,2,3,4,5]的下标范围是
[-5,···,-1,0,4],越界会马上报错(
C++不会)
2.一个list
里可以有不同的数据结构
li = [[1,2,3],1,'2'] print(li) #输出 [[1,2,3],1,'2'] print(1i[0][1]) #输出 2
3.插入方法
li = [['w','j'],'p'] li[0].insert(0,12) print(li) #输出 [[12, 'w', 'j'], 'p']
4.删除方法
第一种方法:pop()
,有返回值
li = [1,2,3] x = li.pop(1) # x = 2 print(li) #输出 [1,3] #pop是会返回值的
第二种方法:del
,没有返回值
li = [1,2,3] del li[1] print(li) #输出 [1,3]
为什么del的用法不是
li.del(1)?
因为
del不是列表特有的方法,就像C++里的
delete和
free一样
第三种方法:remove()
,没有返回值,而且会抛出异常
当我们不知道列表里的某个值的元素的下标是什么,但是又想删除的时候,就使用remove()
li = [1,2,1,3,4] li.remove(1) #输出 [2,1,3,4] li.remove(5) #抛出异常,输出:ValueError: list.remove(x): x not in list
remove()只能删掉第一个元素,不会重复删除,重复删除需要
循环
5.操作方法
用sort()
和sorted()
从小到大排序
li = [5,3,6,2,1,9] print(sorted(li)) #sorted() 返回一个新的列表 #输出 [1,2,3,5,6,9] print(li) #输出 [5,3,6,2,1,9] li.sort() print(li) #输出 [1,2,3,5,6,9]
sorted()返回一个临时的新列表,排序不对原列表产生影响,注意是
sorted(li)而不是
li.sorted()(会报错)
sort()不返回任何东西,对原列表产生操作
li = [5,3] print(li.sort()) 输出:None
如果是不同类型的数据放在同一个列表里面排序,结果会怎么样呢?
li = [5,3,'1'] print(sorted(li))
报错:TypeError: '<' not supported between instances of 'str' and 'int'
翻转列表reverse()
li = [5,3] print(li.reverse()) #输出:None #print(reverse(li)) 报错 li.reverse() print(li) #输出:[3,5]
求长度len()
li = [5,3] print(len(li)) #输出:2 #print(li.len()) 报错 #p bf38 rint(lens(li)) 报错,没有lens() #print(length()) 报错:没有length() #print(size()) 报错:没有size()
像
len()这样调用的函数称为内置函数,为了使它能适用于不止
list的容器,不是
list特有的函数,比如
word = 'Hello' print(len(word)) #输出:5
同理,前面讲到的
sorted()也是内置函数:
word = 'hello' print(sorted(word)) #输出:['e', 'h', 'l', 'l', 'o'] #注意,【字符串】已经变成了【字符数组】了
但是字符串里面没有
list的
append()等类成员,也就是说字符串和字符列表是不等价的,虽然说一些
list的操作也能用在字符串里面,比如负数的下标
word = 'Hello' print(word[-1]) #输出:o
6.列表的数据处理
求和sum()
和范围函数range()
print( sum( range(1, 101) ) ) #输出 5050
注意:
1.
range()的表示方式是左闭右开
[---),右边界要多算一个
2.
range()的第三个参数是缺省的,用于指定步长,如
range(1, 20, 2) #步长为2,[1,19]
求极值min()
和max()
nums = [1,2,3,4,5] print( min(nums) ) #max同理 #输出 1
7.通过列表解析来生成列表
例如:输出1 - 10的平方
nums = [ i ** 2 for i in range(1,11) ]
8.列表切片
当需要访问列表的一部分元素时,可以用list[a:b]来访问区间
[a,b) = [a,b-1],返回的也是一个列表,所以可以采用之前的对列表的操作来操作列表。
print(nums[:4]) #这样也是可以的
负数呢?比如求倒数的四个数的和:
print( sum( nums[-4:] ) )
又比如从头开始取,直到倒数第二个(也就是除了最后一个)
print(num[:-1]) #最后一个数是不包含的(开区间)
冒号两端两个数字都可以缺省:
print(nums[:]) #打印整个列表
注意:切片是一个独立于原列表的新列表:
nums = [1,2,3,,4,5] nums[:].append(6) print(nums) #输出 [1,2,3,4,5] 可以看出并不受切片操作的影响
9.列表复制辨析
片面地复制:用=
nums = [1,2,3,4,5] new_nums = nums new_nums.append(6) print(nums) #输出什么呢? #输出 [1,2,3,4,5,6] !!!!
这个例子说明了Python在列表复制时使用·
=是一种类似于“换名”的操作,直接赋值创造出来的列表并不独立
注意:在Python中单个变量的复制就不是换名了:
num = 5,
new_num = num,改
new_num不影响
num
全面地复制:new_list = list[:]
nums = [1,2,3,4,5] new_nums = nums[:] new_nums.append(6) print(nums) #输出:[1,2,3,4,5] 可以看出两个列表是独立的,终于正常了
10.元组:只读的列表,被阉割了列表的编辑操作
元组切片是可用的,因为切片并不损伤原始数据arr = (3,2,1) print(arr[0:1]) #输出 [3,2]
想对元组动手?那就只能对整体下手:
arr = (3,2,1) arr = [4,3] #这样并不违反规定
11.题外话:如何使print()
不换行?
print()函数的第二个参数被省去,若不想让它换行,就加上
, end = "",把默认的换行符改掉,如:
print("Hello", end = "") print(", world!") #输出 Hello, world!
相关文章推荐
- 【Hello Python World】Class Notes of Week 4
- 【Hello Python World】Class Notes of Week 5
- 【Hello Python World】Week 3(1):if语句
- 【Hello Python World】Week 1(1):探索 & 展望
- 【Hello Python World】Week 5(2):文件和异常
- 【Hello Python World】Week 5(1):类
- Python sample code of hudson remote api, my first Python hello world
- 【Hello Python World】Week 4(1):用户输入和while循环
- Byte-of-python笔记代码1:helloworld.py
- 【Hello Python World】Week 4(2):函数
- 【Hello Python World】Week 1(2):变量和简单数据类型
- (转) Eclipse - Python - Installation of PyDev with a Python Hello World tutorial
- python 3.4.0 简单的print 'hello world',出错--SyntaxError: invalid syntax
- "hello world" of MPI version
- The study of Class and Instance in Python(20170918)
- 20080828 python HelloWorld
- python第一课(hello,world)
- IronPython Hello world
- Python 入门 hello,world SyntaxError: invalid syntax
- How to Get a List of Class Attributes in Python