python基础04——列表和元组

目录

创建列表

列表的重复运算

遍历列表

索引,负索引

按索引遍历列表

列表是可变的

列表切片

查找元素

其他有用的方法

del语句

min和max函数

复制列表

列表解析 list comprehension

带有if的列表解析

二维列表

元组


  • 创建列表

numbers = [1, 2, 3, 4, 5]
names = ['Alice', 'Bob', 'Claire']
mix = [1, 2.0, '3.14159', [4,5], numbers]
print(mix)

numbers = list(range(5))
print(numbers)

列表可以容纳不同类型的元素。

可以用内置函数list()将特定对象(如range()函数返回的对象)转换成列表。

  • 列表的重复运算

numbers = [0] * 5
print(numbers)

numbers = [1,2,3] * 3
print(numbers)

numbers = [1,2,3] * 0
numbers = [1,2,3] * -10
numbers = [1,2,3] * True
numbers = [1,2,3] * False
numbers = [1,2,3] * 1.0      #会异常

当 * 号的左侧是列表而右侧是整数时,*号变成重复运算符,此时会复制出一个列表的多个副本并将它们全部连接在一起。

  • 遍历列表

numbers = [1,2,3,4,5]
for num in numbers :
    print(num)
numbers = [1,2,3,4,5]
for num in numbers :
    num = 99

print(numbers)

用for循环遍历列表。循环变量赋值,不会影响列表的内容。

  • 索引,负索引

nums = [10, 20, 30, 40]

print(len(nums))
print(nums[0], nums[1], nums[2], nums[3])
print(nums[-4], nums[-3], nums[-2], nums[-1])

len函数用于计算列表的长度。

如果列表长度为N(N>0),则索引范围为 0 到 N-1。而负索引的范围是 -1 到 -N

  • 按索引遍历列表

names = ['Alice', 'Bob', 'Claire']
for index in range(len(names)) : 
    print(names[index])

len和range一起使用来获取索引,然后用索引遍历

  • 列表是可变的

nums = [10, 20, 30]
nums[1] = 11
print(nums)
nums = [1]
nums = nums + [2]
nums += [3,4,5]
print(nums)

列表可变,可以对单个元素进行赋值,也可以对整个列表进行连接,使用+ 和 += 符号。

注意第二段的第二行,如果不赋值而仅执行 nums + [2],则nums是不会变的。

  • 列表切片

nums = [0, 10, 20, 30, 40]
print(nums[1:3])            #[10,20]
print(nums[:3])             #[0,10,20]
print(nums[2:])             #[20,30,40]
print(nums[:])              #[0, 10, 20, 30, 40]
print(nums[0:5:2])          #[0,20,40]
print(nums[-1:])            #[40]

print(nums[4:9])            #[40]
print(nums[-10:-3])         #[0,10]
print(nums[100:200])        #[]

切片是list的副本,由起始和结束两个索引确定范围,包含起始索引元素,但不包含结束索引元素。

如果省略起始索引,则起始为0。如果省略结束索引,则结束索引为列表长度。

切片支持步长。也支持负索引。

注意:切片无效索引不会引起异常,python会与省略索引相同的规则处理。

如果起始大于结束,则返回空列表

  • 查找元素

nums = [1,2,3]
if 2 in nums :
    print('2 is in list!')

用in操作符在列表中查找一个元素

not in 表示不在列表中

  • 其他有用的方法

append(item)

index(item)

insert(index, item)

sort()

remove(item)

reverse()

等等

  • del语句

nums = [1,2,3]
del nums[1]
print(nums)

用del语句,按索引删除元素

  • min和max函数

nums = [1,2,3]
print(min(nums))
print(max(nums))

min和max两个内置函数支持序列(比如列表)作为参数,非常方便

  • 复制列表

#没有达到复制效果!
list1 = [1,2,3]
list2 = list1   


#一个复制的例子
list1 = [1,2,3]
list2 = []
for item in list1 :
    list2.append(item)


#更优雅的
list1 = [1,2,3]
list2 = [] + list1

直接变量赋值是不正确的

  • 列表解析 list comprehension

列表解析是一种简洁的表达方式,通过遍历现有列表的元素来创建新列表

#复制列表
list1 = [1,2,3,4,5]
list2 = [item for item in list1]
#其中
#        item是结果表达式
#                 item in list1是迭代表达式
print(list2)

#求第一个列表每个元素的平方数
list1 = [1,2,3,4,5]
list2 = [item**2 for item in list1]

#求第一个列表每个字符的长度
names = ['Alice', 'Bob', 'Claire']
lens = [len(item) for item in names]
print(lens)
  • 带有if的列表解析

#复制列表中小于5的数到新列表
list1 = [1,2,3,4,5]
list2 = [item for item in list1 if item < 5]
print(list2)



#复制名字长度大于3的字符到新列表
names = ['Alice', 'Bob', 'Claire']
names2 = [item for item in names if len(item) > 3]
print(names2)

if子句放在末尾,充当过滤器

  • 二维列表

matrix = [ [1,2,3],
           [4,5,6],
           [7,8,9] ]
print(matrix[0])
print(matrix[0][1])

处理元素的方法与C和java看起来类似

  • 元组

my_tuple=(1,2,3)
print(my_tuple)
for item in my_tuple:
    print(item)

my_list = list(my_tuple)
my_tuple = tuple(my_list)

元组是不可改变的序列。用圆括号来定义。

除了会改变内容的操作(append、remove、sort等等)外,元组支持所有与列表相同的操作,比如下标索引,各种方法,内置函数,切片表达式,in 和 + *操作符。

元组的性能会比列表好,可以和列表互相转换(使用list和tuple函数)

上一篇:python基础03——文件和异常

下一篇:python基础05——字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值