day6-列表相关

列表相关操作

1.数学运算符:+、*
  1. 列表1 + 列表2 - 将两个列表中的元素合并产生一个新的列表
    例如:[x, y, z] + [m, n] -> [x, y, z, m, n]
  2. 列表 * N / N * 列表 - 列表中的元素重复N次产生一个新的列表
nums1 = [10, 20, 30]
nums2 = [1, 2]
print(nums1+nums2)
print(nums1 * 2)
print(nums2 * 4)

在这里插入图片描述

2.比较运算符:==、!=、>、<、<=、>=
  1. ==、!=
print([1, 2, 3] == [1, 2, 3])	# True
print([1, 2, 3] == [3, 2, 1])	# False
  1. <、>、<=、>=
print([1, 100, 200, 300] > [10, 20])	# False
print([1, 100, 1000] > [1, 200, 0])		# False
3.in 和 not in
  • 元素 in 列表 - 判断列表中是否存在指定元素
  • 元素 not in 列表 - 判断列表中是否不存在指定元素
print(10 in [10, 20, 30])	# True
print(100 in [10, 20, 30])	# False
print([10, 20] in [10, 20, 30])		# False
练习:删除分数列表中不及格的分数
方法一:
scores = [90, 89, 23, 67, 99, 96, 56, 78, 91, 45]
new_scores = []
for i in scores:
    if i >= 60:
        new_scores.append(i)
print(new_scores)
方法二:
scores = [90, 89, 23, 67, 99, 96, 56, 78, 91, 45]
for i in scores:
    if i < 60:
        scores.remove(i)
    else:
        continue
print(scores)

在这里插入图片描述

列表相关函数

1.max和min
  • max(序列) - 获取序列中元素的最大值
  • min(序列) - 获取序列中元素的最小值
注意:序列中的元素之间必须支持比较大小的操作
nums = [78, 23, -9, 34, 89, 54]
print(max(nums))
print(min(nums))

在这里插入图片描述

2.最大值、最小值的套路
nums = [78, 23, -9, 34, 89, 54]
max1 = nums[0]
for i in nums[1:]:
    if i > max1:
        max1 = i
print(max1)

在这里插入图片描述

nums = [78, 23, -9, 34, 89, 54]
min1 = nums[0]
for i in nums[1:]:
    if min1 > i:
        min1 = i
print(min1)

在这里插入图片描述

3.sum - 求数字和
sum(数字序列)	-	计算序列中所有元素的和
nums = [78, 23, -9, 34, 89, 54]
print(sum(nums))

在这里插入图片描述

4.sorted
  • sorted(序列) - 将序列中的元素升序排序(从小到大),产生一个新的列表
  • sorted(序列, reverse=True) - 将序列中的元素降序排列(从大到小),产生一个新的列表
nums = [78, 23, -9, 34, 89, 54]
new_nums = sorted(nums)
print(new_nums)
print(nums)
new_nums = sorted(nums, reverse=True)
print(new_nums)

在这里插入图片描述

5.len - 统计元素个数
  • len(序列)
nums = [78, 23, -9, 34, 89, 54]
print(len(nums))
print(len('abc'))

在这里插入图片描述

6.list
  • list(序列) - 将指定数据转换成列表(所有的序列都可以转换成列表;是将序列中的元素作为列表的元素)
print(list('abc123'))
print(list(range(3)))

在这里插入图片描述

7.enumerate
for 变量1, 变量2 in enumerate(列表):
    变量1是每个元素的下标
    变量2是每个元素
[10, 20, 30]	->	[(0, 10), (1, 20), (2, 30)]
nums = [78, 23, -9, 34, 89, 54]
for index, item in enumerate(nums):
    print(index, item)

在这里插入图片描述

sep = [10, 20, 30]
for i in sep:
    print(i)
sep = [[10, 20, 30], [100, 200, 300], [300, 400, 500]]
for x, y, z in sep:
    print(x, y, z)

在这里插入图片描述

列表相关方法

1.列表.clear() - 清空列表
nums = [20, 99, 78, 'abc']
nums.clear()
print(nums)		# []
2.列表.copy() - 复制原列表产生一个一模一样的新列表

如果直接用一个变量给另一个变量赋值,赋的是地址。复制后两个变量指向的是同一个数据

list1 = [20, 90, 78, 'abc']
list2 = list1.copy()
print(id(list1), id(list2))

list3 = list1
print(id(list1), id(list3))

在这里插入图片描述

3.列表.count(元素) - 统计指定元素在列表中出现的次数
nums = [10, 23, 0, 12, 10, 34, 23, 23, 50]
print(nums.count(10))	# 2
print(nums.count(23))	# 3
4.列表.extend(序列) - 将序列中的元素全部添加到列表中
nums = [100, 200]
scores = [90, 89, 78, 87, 99, 23]
nums.extend(scores)
nums.extend('abc')
nums.extend(range(3))
print(nums)

在这里插入图片描述

5.列表.index(元素) - 获取元素的下标值(0开始的下标值)
注意:如果元素不存在会报错,如果元素有多个,则返回最前面那一个元素
names = ['小明', '张三', '李四', '小明']
print(names.index('李四'))	# 2
print(names.index('小明'))	# 0
6. 列表.reverse() - 将列表中的元素逆序
names = ['小明', '张三', '李四']
names.reverse()
print(names)

在这里插入图片描述

7. 列表.sort()

将列表中的元素升序排序(直接修改原列表中元素的顺序,不会产生新的列表)

列表.(reverse=True) - 将列表中的元素降序排序(直接修改原列表中元素的顺序,不会产生新的列表)

nums = [10, 23, 0, 12, 10, 34, 23, 23, 50]
nums.sort()
print(nums)

在这里插入图片描述

列表推导式(重要)

创建列表的快捷方式
  • 语法1:(将序列中的元素按照统一的规则整体交换)

[表达式 for 变量 in 序列]

list1 = [10 for i in range(3)]
print(list1)
list2 = [i for i in range(3)]
print(list2)
list3 = [i*10+2 for i in range(3)]
print(list3)

在这里插入图片描述

练习:将nums中所有的元素乘以10,产生一个新的列表

nums = [12, 33, 7, 9]
new_nums = [i*10 for i in nums]
print(new_nums)

在这里插入图片描述

练习:把所有元素的个位数提取出来

nums = [10, 23, 50, 12, 10, 34, 23, 23, 50]
new_nums = [i%10 for i in nums]
print(new_nums)

在这里插入图片描述

  • 语法2:(对序列中的元素进行筛选/删除)

[表达式 for 变量 in 序列 if 条件语句]

练习:输出奇数

nums = [12, 33, 7, 9]
list_1 = [i for i in nums if i % 2]
print(list_1)

在这里插入图片描述

练习:利用列表推导式删除scores中小于60的分数

scores = [89, 34, 56, 90, 56, 78, 99]
new_scores = [i for i in scores if i >= 60]
print(new_scores)

在这里插入图片描述

  • 语法3:

[三目运算符 for 变量 in 序列]

  • 补充:三目运算符

Python的三目运算符 - if else

值1 if 表达式 else 值2 - 如果表达式的值为True,整个运算的结果是值1, 否则是值2

练习:利用列表推导式将nums中所有的偶数除以2,所有奇数乘以2

nums = [20, 34, 33, 6, 15, 7, 20]
new_nums = [i*2 if i % 2 else i//2 for i in nums]
print(new_nums)

在这里插入图片描述

练习:偶数除以2,奇数不变

nums = [20, 34, 33, 6, 15, 7, 20]
new_nums = [i if i % 2 else i//2 for i in nums]
print(new_nums)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/* * Record.c * * Created on: 2014-5-26 * Author: zdl */ #include "includes.h" char *const Display_Name[]={ "Music List", "1-Beyond.wav", "2-LetItG.wav", "3-WeAreO.wav", "4-FanFan.wav", "5-OldBoy.wav", "6-Sodagr.wav", "7-WangF1.wav", "8-WangF2.wav", "9-Mayday.wav", "10-StevC.wav", }; void Music_Graph() { SysTickDisable(); //---------Draw Title---------- ui8Flush_Flag=FLUSH_ON; GrClearDisplay(&g_sContext); GrFlush(&g_sContext); } void Music_Begin() { DSTATUS i=1; SystemClock=SysCtlClockGet(); //----------------硬件初始化--------------- DAC_Init(); //初始化DAC //-------------------初始化SD卡-------------------- while(i==1)// 使用文件系统初始化SD卡 i=disk_initialize(0); //-------------------初始化Timer------------------- SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1); TimerDisable(TIMER1_BASE, TIMER_A); TimerConfigure(TIMER1_BASE, TIMER_CFG_A_PERIODIC_UP); TimerIntRegister(TIMER1_BASE,TIMER_A,Timer1IntHandler); TimerIntEnable(TIMER1_BASE, TIMER_TIMA_TIMEOUT); MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); MAP_GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_6); MAP_GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_6,GPIO_PIN_6); SysTickEnable(); } void Music_Main() { static uint8_t preDisplay_Num=255,Display_Num=0; while((ui8ButtonKeyValue&KEY_LEFT_ENTER) == 0 &&(ui8ButtonKeyValue&KEY_RIGHT_EXIT)==0) { Display_Num = GetWheelKey(); _nop(); if(Display_Num != preDisplay_Num) { DrawMenu(Display_Num,Display_Name); preDisplay_Num = Display_Num; } SysCtlDelay(SystemClock/100); } if(Music_Enter==1) { GrClearDisplay(&g_sContext); GrStringDrawCentered(&g_sContext, Display_Name[Display_Num], AUTO_STRING_LENGTH, 63, 20, OPAQUE_TEXT); GrContextFontSet(&g_sContext, &g_sFontFixed6x8); GrStringDraw(&g_sContext,"Time:",4,0,53,1); GrStringNumberCentered(&g_sContext,0,0,35+22,57); GrStringDraw(&g_sContext,"-",1,35+9,53,1); GrStringNumberCentered(&g_sContext,0,0,35+2,57); GrStringDraw(&g_sContext,"/",1,35+34,53,1); GrStringNumberCentered(&g_sContext,0,0,35+48,57); GrStringDraw(&g_sContext,"-",1,35+55,53,1); GrStringNumberCentered(&g_sContext,0,0,35+70,57); GrFlush(&g_sContext); ui8Flush_Flag=FLUSH_OFF; WaveOpen(Display_Name[Display_Num],MONO); ui8Flush_Flag=FLUSH_ON; preDisplay_Num=255; ui8ButtonKeyValue&=~(KEY_LEFT_ENTER+KEY_RIGHT_EXIT); } else { preDisplay_Num=255; rcd_ply_sel = 255; } } void Music_Quit() { MAP_GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5,0); TimerDisable(TIMER1_BASE, TIMER_A); ui8Flush_Flag=FLUSH_ON; }
最新发布
07-11

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值