enumerate()函数 将下标和元素配对存放 P65
class enumerate(object)
| enumerate(iterable, start=0)
|iterable可迭代的
| Return an enumerate object.
|
| iterable
| an object supporting iteration
|
| The enumerate object yields pairs containing a count (from start, which
| defaults to zero) and a value yielded by the iterable argument.
|
| enumerate is useful for obtaining an indexed list:
| (0, seq[0]), (1, seq[1]), (2, seq[2]), ...
l1 = ['a','abc','jk','oppo']
for index,value in enumerate(l1): #for可以传两个变量
print(index,value)
for index,value in enumerate('happy'):
print(index,value)
'''
运行结果:
0 a
1 abc
2 jk
3 oppo
0 h
1 a
2 p
3 p
4 y
'''
冒泡排序
numbers = [10,3,20,39,1,7,2,40,18]
'''
系统给的排序方式,一种不改变原numbers,一种改变原numbers
numbers = sorted(numbers)
print(numbers)
numbers.sort(reverse=True)
print(numbers)
'''
for i in range(len(numbers)):
for j in range(i+1,len(numbers)):
if numbers[i]>numbers[j]:
#快速交换位置
numbers[i],numbers[j]=numbers[j],numbers[i]
print(numbers)
print('----->',i)
'''
运行结果:
[3, 10, 20, 39, 1, 7, 2, 40, 18]
[1, 10, 20, 39, 3, 7, 2, 40, 18]
-----> 0
[1, 3, 20, 39, 10, 7, 2, 40, 18]
[1, 2, 20, 39, 10, 7, 3, 40, 18]
-----> 1
[1, 2, 10, 39, 20, 7, 3, 40, 18]
[1, 2, 7, 39, 20, 10, 3, 40, 18]
[1, 2, 3, 39, 20, 10, 7, 40, 18]
-----> 2
[1, 2, 3, 20, 39, 10, 7, 40, 18]
[1, 2, 3, 10, 39, 20, 7, 40, 18]
[1, 2, 3, 7, 39, 20, 10, 40, 18]
-----> 3
[1, 2, 3, 7, 20, 39, 10, 40, 18]
[1, 2, 3, 7, 10, 39, 20, 40, 18]
-----> 4
[1, 2, 3, 7, 10, 20, 39, 40, 18]
[1, 2, 3, 7, 10, 18, 39, 40, 20]
-----> 5
[1, 2, 3, 7, 10, 18, 20, 40, 39]
-----> 6
[1, 2, 3, 7, 10, 18, 20, 39, 40]
-----> 7
-----> 8
'''
————分割线————
tuple元组:类似列表,可以当成容器
符号:( )
t1 = ()
print(type(t1))
t2 = ('hello')
print(type(t2))
t3 = ('hello',)
print(type(t3))
#单元素元组,添完元素要加逗号,不加默认和没有括号一样
t4 = ('aa','bb')
print(type(t4))
#多元素元组,最后不加逗号不影响
'''
运行结果:
<class 'tuple'>
<class 'str'>
<class 'tuple'>
<class 'tuple'>
'''
元组中的内容不可修改
列表可以增删改查,元组只剩下查
不能增,那么怎么往元组中放内容?
怎么查,查后怎么获取? 下标index 切片[:] 同列表
list = [1,2,3,4,5,6]
t5 = tuple(list)
print(t5)
print(t5[0])
print(t5[-1])
print(t5[0:-3])
#系统函数
#找最大值最小值
print(max(t5))
print(min(t5))
#求和
print(sum(t5))
#求长度
print(len(t5))
'''
运行结果:
(1, 2, 3, 4, 5, 6)
1
6
(1, 2, 3)
6
1
21
6
'''
符号:
# +
t1 = (3,4)+(1,2)
print(t1)
# *
t2 = (3,4)*2
print(t2)
# is 比较内存地址
print(t1 is t2)
# in
print(3 in t2)
'''
运行结果:
(3, 4, 1, 2)
(3, 4, 3, 4)
False
True
'''
元组自身的函数:
tuple.index(*) 从元组tuple中找出*的下标位置,没有则报错
tuple.count(*) 元组中出现*元素的次数
拆包: 可迭代的都可以拆包(如:元组,列表,字符串)
t1=(4,7,3)
#a,b=t1 ValueError: too many values to unpack(拆包) (expected 2)
#x,y,z=(6,) ValueError: not enough values to unpack (expected 3, got 1)
a,b,c=t1
print(a,b,c)
a=t1
print(a)
'''
运行结果:
4 7 3
(4, 7, 3)
'''
变量个数与元组个数不一致时,处理方法::
元组元素多,变量少的情况:用*号当通配符来包含没被指定的元素,以列表形式表示
t1 = (2,6,4,0,9,1)
a,*_,c=t1
print(a,c,_)
a,c,*_=t1 # *_的位置可以改变
print(a,c,_)
a,b,*c=t1 # 不一定只能用_(_可以作为一个名出现,字母数字下划线)
print(a,b,c)
'''
运行结果:
2 1 [6, 4, 0, 9]
2 6 [4, 0, 9, 1]
2 6 [4, 0, 9, 1]
'''
元组元素少,变量多的情况:
t1=(9,)
a,*b=t1 #*b表示未知个数0~n 0-->[] 多个元素-->[ , , ]
print(a,b)
t1=(9,4,8,6)
a,*b=t1
print(*b)
'''
运行结果:
9 []
4 8 6
'''
赋值时加*,即装包;装好的东西前又加*,就会执行拆包
拆包装包函数也会用到