python之列表

系列文章目录

第六章 Python 机器学习入门之循环语句与列表相关



前言

今天学习列表的相关和排序冒泡


一、列表的定义和获取元素

List表:
作用:类似于其他语言的数组。数组:数字的组合,字母的组合,字符串的组合…
符合:列表:[ ]

names = ['marry','tom','rose','jack']
computer_brank = []
#地址
print(id(name))
print(id(computer_brank))#无论列表是否为空都会被分配地址
#元素获取使用:下标  索引
print(names[0])
print(names[1])
#获取最后一个元素
print(names(-1))
print(names(len(names)-1))
#获取第一个元素
print(name[-5])

#结合循环
#for i in 'hello'
#print(i)
print('**************')
for name in names:
	print(name)

#查询names里面有没有保存rose
for name in names:
	if name=='rose':
		print('say:yes')
		break
else:
	print('''say:no''')

二、列表操作更新和删除

#增删改
brands=['shuai','beautiful','momo','miko']
#改
print(brands)
print(brands[-1])
brands[-1]='mikoo'
print(brands)

#momo----->caca
for i in range(len(brands)):
#i是下标:0,1,2,3....
	if 'momo'in brands[i]:
	brands[i] = 'caca'
print(brands)
#删除 del 是delete的缩写
del brands[2]
print(brands)
#删除 momo,miko
brands=['shuai','beautiful','momo','miko']
l=len(brands)
i=0
while i<l:
	if 'momo' in brands[i] or 'miko' in brands[i]:
	#此处的in也可以用==,'momo' == brands[i],‘==’比较精确,而in的话,只要包含有momo都能True
		del brands[i]
		l-=1
	else:#这里也可以使用continue
		i+=1
print(brands)

二、列表的切片操作

字符串的切片操作

列表的切片操作
list['happy','sad','lovely','beautiful','handsome','worried']
print('list[2:4]')
结果:
'sad'
'lovely'
'beautiful'
'handsome'
和前面字符串的切片一样,可以设计步长。
print('list[2::2]')#步长正方向
结果:
'sad'
'beautiful'
'worried'
想要从后面向前设计步长,可以这样
print('list[-2:-5:-1]')
为什么这样写呢,我们知道-2'handsome'-5'sad',要想从-5-2需要反方向才可以,所以第三个变量给负数,负几就是设计步长。

三、列表添加,删除元素,翻转,计次数

列表是在内存建立的,只能建立临时的小数据库

创建一个空列表
girls = ['小龙女']
while True:
	names = input('请输入你心目中的好看的女生:')
	if names =='quit':#quit退出,可以退出循环,可以任意设置。
		break
	#列表的函数使用:append   extend  insert
	#append()   末尾追加,将一个对象追加到list尾部,对象可以是str,list,字典等对象
	girls.append(names)
	#extend()   将一个序列中的每个元素一次性添加到列表中
	girls.extend(names)   #此时,如果我输入刘亦菲,会输出'小龙女','刘','亦','菲'
	这个时候是不是想到了'+'拼接符合,强大的'+'号,当然也可以实现列表的拼接
	girls = girls+girls
	#insert()  指定位置插入,后面向后移动一位
	#girls['小龙女','刘诗诗','落九川','千雅浙一湖']
	#         0       1         2        3
	girls.insert(1,'千山鸟飞绝')
	#girls['小龙女','千山鸟飞绝','刘诗诗','落九川','千雅浙一湖']
	#         0       1            2        3	     4
print(girls)
'''
删除:
del list[index]
remove()  删除列表中第一次出现的元素e,返回值是None。如果没有找到要删除的元素则报告异常
pop()     弹栈  移除列表中的最后一个元素,返回值是删除的那个元素,默认删除最后一个,但是也可以指定index(下标)删除
clear()
'''
#remove
lunch_list = ['牛排','寿司','牛肉面','麻辣香锅''自助火锅']
lunch_list.append('麻辣香锅')#后接麻辣香锅
lunch_list.remove('麻辣香锅')#如果找不到,报异常
print(lunch_list)---->把从左往右数的第一次出现的麻辣香锅给删除了。

#pop
lunch_list = ['牛排','寿司','牛肉面','麻辣香锅','自助火锅']
lunch_list.pop()#如果找不到,报异常。返回值是自助香锅
print(lunch_list)#---->删去了自助火锅
这和lun_list.pop(4)是一样的

#clear 清除列表(里面的元素全部删除)
lunch_list = ['牛排','寿司','牛肉面','麻辣香锅','自助火锅']
lunch_list.clear()
print(lunch_list)#-------->[]

'''
翻转:reverse()
'''
lunch_list = ['牛排','寿司','牛肉面','麻辣香锅','自助火锅']
lunch_list.reverse()#----->['自助火锅','麻辣香锅''牛肉面','寿司','牛排']print(lunch_list[::-1])不同的是,#[::-1]只是逆序去除列表中的元素打印出来,而reverse是直接改变了位置。

'''
次数:count()
'''
lunch_list = ['牛排','寿司','牛肉面','麻辣香锅','自助火锅','麻辣香锅']
print(lunch_list.count('麻辣香锅'))----->2

四、列表求最大值max,最小值min,求和sum,排序sorted,sort

练习①

#产生10个随机数,保存在列表中
'''
步骤:
1.如何产生随机数
2.10个数字的产生
3.将产生的随机数放到列表中
4.打印列表
'''
import random
random_list=[]#存放随机数
for i in range(10):
	ran = random.randint(1,100)
	random_list.append(ran)
print(random_list)
'''
产生10个不同的随机数
'''
import random
random_list=[]#存放随机数
for i in range(10):
	ran = random.randint(1,100)
	if ran not in random_list
		random_list.append(ran)
print(random_list)
乍一看,没什么问题,但是输出的时候就能看出问题了。
for循环10次,如果要取10个不同的随机数,只可能是10次都不相同,而如果有一次相同,那么循环就不进入if执行语句,输出就要少一个数字。

'''
所以用while
'''
import random
random_list=[]#存放随机数
i=0
while i<10:
	ran = random.randint(1,100)
	if ran not in random_list:
		random_list.append(ran)
		i+=1
print(random_list)

'''
我现在又想找10个随机值中的最大值,最小值,系统内置函数max,min,或者也可以自己写。
'''
max_value = max(random_list)
print(max_value)
min_value = min(random_list)
print(min_value)

print('自己写求最大值')
Max_value = random_list[0]
for i in random_list:#这个我们知道,把random_list的依次值给i
	if i>Max_value:
		Max_value=i
print(Max_value)
#---------------------------------------
print('自己写求最小值')
Min_value = random_list[0]
for i in random_list:#这个我们知道,把random_list的依次值给i
	if i<Min_value:
		Min_value=i
print(Min_value)

'''
现在我又想求和运算
'''
total_neizhi=sum(random_list)
print('系统求和',total_neizhi)
total=0
for i in random_list:
	total+=i
print('自定义求和',total)

'''
现在我又想排序
'''

'''
>>> help(sorted)
Help on built-in function sorted in module builtins:

sorted(iterable, /, *, key=None, reverse=False) 默认升序reverse=False,reverse=True降序
    Return a new list containing all items from the iterable in ascending order.返回一个新的列表,以升序形式

    A custom key function can be supplied to customize the sort order, and the reverse flag can be set to request the result in descending order.

'''
#升序
sort_list=sorted(random_list)
print(sort_list)
这个和之前一样,只是升序输出,其本身位置并没有改变

random_list.sort()#但是用sort()的话,会将列表里面的值位置改变
#降序
sort_list=sorted(random_list,reverse=True)
print(sort_list)

random_list.sort(reverse=True)

五、冒泡排序法

相邻两个数值之间比较,顺序对的比较下一位相邻,直到全正确

#x到d排序
list1=[20,13,40,39,29,15,25]
for i in range(len(list1) - 1):  # 这个循环负责设置冒泡排序进行的次数0 1 2 3 4 5 
    for j in range(len(list1) - i - 1):  # j为列表下标0~5,0~4,0~3,0~2,0~1,0~0
        if list1[j] > list1[j + 1]:
            room= list1[j]
            list1[j]=list1[j+1]
            list1[j+1]=room
print(list1)


#d到x排序
list1=[20,13,40,39,29,15,25]
for i in range(len(list1) - 1):  # 这个循环负责设置冒泡排序进行的次数0 1 2 3 4 5 
    for j in range(len(list1) - i - 1):  # j为列表下标0~5,0~4,0~3,0~2,0~1,0~0
        if list1[j] < list1[j + 1]:
            room= list1[j]
            list1[j]=list1[j+1]
            list1[j+1]=room
            
print(list1)

六、列表支持的符号,列表嵌套,类型转换

+’拼接
‘*’多个:
list1=[0,1]*2------>list=[0,1,0,1,0,1]in’是否存在,返回布尔类型

#二维:
list1=[2,5,1,23,[3,4],[5,7]]
取出一个列表:
list2=list1[-1]--->[5,7]
取出一个列表中的值
list3=list1[-1][0]----->5
#列表中的元素
'''
整形
字符串类型
浮点型
列表
元组
字典
对象
'''
类型转换:
str()
int()
list()----->将指定内容转换成列表,只要内容是可迭代的都可以。例如字符串,range(1,10)
list(range(1,10,4))----->[1,5,9]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值