Python基础学习——列表详解
1. 列表的生成和遍历
1.1 列表的定义
list1=[]
list2=list()
list3=['tian','yu','平']
nums=[i for i in range(10)]
在构建列表时常选用列表生成式方法来提高效能
2.2 遍历列表
l=[1,2,3]
print(l)
for i in range(len(list2)):
print(list2[i],end=' ')
for x in list2:
print(x,end=' ')
for i,x in enumerate(list2):
print(i,x,end=' ')
常用方法3,既可以得到列表的元素,又可以获取下标。
3.3 列表的索引和切片
- 列表的索引,index————[::]—>开始索引(默认为0):结束索引(默认为列表长度):步长(默认为1)
- 注意列表的索引从0开始
- 列表索引包括正向索引和负向索引
nums=[i for i in range(10)]
print(nums)
print(nums[2])
print(nums[-1])
print(nums[:])
print(nums[1:])
print(nums[::-1])
-
ord():查看字符对应编码 -
chr():将编码处理成对应字符
由于篇幅问题,其它情况就不一一列出,还需多加练习列表的切片和索引取获取元素
2. 列表的常用方法
2.1 插入元素方法
- 插入元素的方法:append()追加元素、insert()插入元素
list1=[1,2,3]
list1.append(4)
list1.insert(2,6)
2.2 删除元素方法
- 删除元素的方法:remove()、clear()清空元素
list1=[1,1,3,4]
list1.pop()
list1.remove(1)
list1.clear()
2.3 查看元素是否存在返回索引
list=['tian', 'yu', 'ping']
num=list.index('tian')
print(num)
if 'tian' in list:
print(list.index('yu'))
print(list.count('yu'))
2.3 对列表元素排序、反转和统计元素个数
list1=['tian', 'yu', 'ping']
list1.reverse()
print(list1)
list2=[1,23,4,5]
list2.sort(reverse=True)
print(list2)
list1=[1,3,3,32,3]
print(list1.count(3))
3. 列表的运算
l=[0]*10
- 比较运算,从左到右,当到某个元素以经比较出结果就不在继续下去
list1=[1,2,3,4]
list2=[1,2,3,4,5]
list3=list1+list2
print(list1 == list2)
print(list1 >= list2)
print(list1 <= list2)
list1 = [1, 2, 3, 4]
list2 = ['1','2','3','5']
list2=[int(i) for i in list2]
print(list1 <= list2)
4. 用于列表的排序算法
4.1 简单选择排序
nums = [1, 23, 54, 34, 42]
for i in range(len(nums) - 1):
min_value, min_index = nums[i], i
for j in range(i + 1, len(nums)):
if nums[j] < min_value:
min_value, min_index = nums[j], j
nums[i], nums[min_index] = nums[min_index], nums[i]
print(nums)
4.2 冒泡排序
nums = [1, 23, 54, 34, 42]
for i in range(1, len(nums)):
for j in range(len(nums) - i):
if nums[j] > nums[j + 1]:
nums[j + 1], nums[j] = nums[j], nums[j + 1]
4.3 改进版冒泡排序
nums = [1, 23, 54, 34, 42]
for i in range(1, len(nums)):
swapped = False
for j in range(len(nums) - i):
if nums[j] > nums[j + 1]:
nums[j + 1], nums[j] = nums[j], nums[j + 1]
swapped = True
if not swapped:
break
5. 列表经典编程题的应用
5.1 幸运的女人
30个人,其中15个男人15个女人坐船出海,结果船坏了。需要把其中15个人扔到海里,其他人才能够存活下来;所有人围成一圈,有某个人开始 报数,报到9的就被扔下海里,接着从1开始报数,直到将15个人仍下海。最后,15个女人都存活下来,15个男人被仍下海。 问原先那些位置是男人,那些位置是女人?
persons = [True] * 30
index, counter, number = 0, 0, 0
while counter < 15:
if persons[index]:
number += 1
if number == 9:
persons[index] = False
counter += 1
number = 0
index += 1
if index == 30:
index = 0
for person in persons:
print('女' if person else '男', end=' ')
print('\n','*'*100)
persons=[i for i in range(1,31)]
for _ in range(15):
persons=persons[9:]+persons[0:8]
for i in range(1,31):
print('女' if i in persons else '男',end=' ')
5.2 扑克牌游戏发牌模拟
用一个列表保存54张扑克牌,洗牌,按斗地主的发牌方式把牌发给三个玩家, 多的3张牌给第一个玩家(地主),把每个玩家手上的牌显示出来。
import random
nums=[i for i in range(2,11) ]
others=['J','Q','K','A']
colors=['黑桃','红桃','方块','梅花']
cards=[str(i)+j for i in range(2,11) for j in colors]+[i+j for i in others for j in colors]
cards=cards+['B','S']
print(len(cards))
random.shuffle(cards)
user1_game=[]
user2_game=[]
user3_game=[]
for i in range(0,len(cards)-3,3):
user1_game.append(cards[i])
user2_game.append(cards[i+1])
user3_game.append(cards[i+2])
user1_game=user1_game+cards[-1:-4:-1]
print('第一个玩家的牌:\n',user1_game)
print('第二个玩家的牌:\n',user2_game)
print('第三个玩家的牌:\n',user3_game)
6. 列表中的统计学
注意以下函数都是基于random库下
import random
persons=['lihua','wangliang','beijing','jinghai','longlue','lisan']
person=random.sample(persons,3)
print(person)
- choices()函数可以对列表元素有放回抽样(可以重复抽中)---->返回一个列表
import random
persons=['lihua','wangliang','beijing','jinghai','longlue','lisan']
for _ in range(2):
person=random.choices(persons,k=2)
print(person)
import random
persons=['lihua','wangliang','beijing','jinghai','longlue','lisan']
person=random.choice(persons)
print(person)
import random
persons=['lihua','wangliang','beijing','jinghai','longlue','lisan']
random.shuffle(persons)
print(persons)
7. 总结
通过列表的学习,基本上能够解决一些基本的 问题,但列表的运用是非常灵活的同时应用场景也十分广泛。列表这里要通过大量的练习来巩固编程思想,后期很多算法都是基于列表的数据结构。
语录
学习的过程是可能需要付出很多心血, 但坚持是成为一个优秀数据分析师必然要经历的过程。 数据分析的学习之路, 并不是学的越多越好, 而是要将学习的方向明确好, 再使正确的力, 这样才可以在正确的方向 做正确的事。 码字不易, 求个赞哈!
|