c++ list遍历_Python 新手上车8:列表3 : 遍历列表和列表切片

5d71ae047f0d8900c939681be074795c.png

e23ce6919e193e55bb27f00fc740024f.png

遍历列表

       有时候我们希望获得列表内的所有元素,而列表长度有可能很长,这时候使用每一句话打印一个,就太过于繁琐,因此我们尝试使用For循环来解决这个问题:

code_languages=['Python','C/C++','Rust','R','Java']for code_language in code_languages:    print(code_language)

1dae62ad657a1a384cf0f1cbcadc3047.png

第一行:我们定义了一个列表

第二行:我们定义了一个for 循环, for 循环中的code_language依次取得列表中的每一个元素,for ... in list , 是for循环的基本结构。

第三行: 打印这个元素,注意到print缩进了四个字符,这代表

print(code_language), 是循环的一部分。缩进不能错哦!

我们继续解释一下循环的意义:使用 

for code_language in code_languages , 遍历得到的第一个元素为 'Python' , 此时 code_language就被赋值为'Python'了, 当我们继续往下执行时,我们发现我们打印了 code_language 变量, 那么Python就被打印出来了, 此时循环继续遍历列表得到 'C/C++' , 接着再将 'C/C++'  打印出来。以此类推,列表中的元素就都被打印出来了。

8c17b851ca81e8d81917246e741a3b83.png

列表循环的更多操作

  字符串连接操作

code_languages=['Python','C/C++','Rust','R','Java']for code_language in code_languages:    print(code_language.upper()+" is an useful programming language")

第一行:我们定义了一个列表

第二行:我们定义了一个for 循环, for 循环中的code_language 依次取得列表中的每一个元素

第三行: 打印这个 code_language 变量的全部字母大写 , 并拼接其他字符串

b605ed9d4517fe2bd6508b0e9d96e7fd.png

我们对循环中的变量进行了操作,结果得到的就是列表中的每一个元素,都按这个操作进行字符串拼接,并打印出一句话。 这个例子可以看出,程序是如何帮助我们解决重复性工作。我们并不需要每个元素都打印一行句子。

让我们考虑一下如果缩进不正确的时候会发生什么:

8504da62987325869c222d721b00274b.png

程序提示我们,在for循环的下一行,我们要进行缩进。否则程序循环不知道需要循环哪一句代码。

26b46f3279eff11397093cfefdfb854b.png

数值列表

需要遍历一个数值范围时,我们可以用到range( ):

for num in range(1,5):    print(num)

第一行,for 循环遍历1,2,3,4 ,注意最后一位数值不取

第二行,打印变量num 即 1,2,3,4

68ed612d63e0e7f4c7fe8c70804f21e5.png

  当你希望指定一定的步距时,你可以在range最后一位指明步距多大,例如步距为2, 由于从1 开始,且步距为2 ,因此只有1,3满足要求:          

for num in range(1,5,2):    print(num)

74d9658e8bd74ebfe8f7ecf5aea45a44.png

使用range() 创建列表:

create_nums=list(range(1,20,3))print(create_nums)

第一行:将一个数值列表赋值给 create_nums

第二行:将create_nums打印出来

54890967c55bc22f1770151d38e116cf.png

list(range()) 可以为我们直接创建一个数值列表。

数值列表的简单计算:

create_nums=list(range(1,20,3))print(create_nums)print(sum(create_nums))print(max(create_nums))print(min(create_nums))

第一行:将一个数值列表赋值给 create_nums

第二行:将create_nums打印出来

第三行:打印create_nums列表数值的求和

第四行:打印create_nums列表数值的最大值

第五行:打印create_nums列表数值的最小值

41bb62de64406d39f1a1b1510a471d65.png

51372ea4a997957a5f7e542344032f0a.png

列表切片

    列表切片,我喜欢理解为切片面包,试想一下,你可以取最前面的两片,你可以取中间的两片,你可以取从中间到最末尾的几片。而列表切片就是类似的概念:

email_names = ['James','Charles','micheal','Levis','David']print(email_names[0:2])print(email_names[2:3])print(email_names[2:])print(email_names[-3:])print(email_names[0:4:2])

第一行:我们定义了一个列表

第二行:我们打印了列表中 第一和第二个元素,注意到了吗,列表切片的最后一位也是不取的哦

第三行:我们打印了列表中 第三个元素。

第四行:我们打印了列表中从第三个到最后一个元素间的所有元素。

第五行:列表也可以使用负数切片。

第六行:列表切片也可以有步距哦。

69b928e2499c3cf4f89b73dd066215c2.png

我们可以遍历列表,当然也可以遍历列表切片了:

email_names = ['James','Charles','micheal','Levis','David']print(email_names[0:2])for email_name in email_names[0:2]:    print(email_name)

第一行:我们定义了一个列表

第二行:我们打印了列表中 第一和第二个元素,注意到了吗,列表切片的最后一位也是不取的哦

第三行:我们遍历了列表切片  email_names[0:2]

第四行:我们打印了变量 email_name

087ad0bcb91f5f5d46e0870f740a6a95.png

从结果可以看出,遍历列表切片时,只遍历列表切片内含有的元素。

789c4b6e2eb94aaa0d98a478aca86eef.png

答案与习题

上期答案:

1.自己定义一个列表 

car_names=['BMW','Audi','Benz','Toyota']

2.将这个列表分别使用sort() 、sorted() 、sort(reverse=True)、reverse() ,看看打印出来有什么不同

car_names=['BMW','Audi','Benz','Toyota']print(sorted(car_names))print(car_names)  #sorted不改变列表顺序car_names=['BMW','Audi','Benz','Toyota']car_names.sort()print(car_names)  #sort永久改变列表顺序  car_names=['BMW','Audi','Benz','Toyota']car_names.reverse() print(car_names)  #按原列表顺序的倒序排列car_names=['BMW','Audi','Benz','Toyota']car_names.sort(reverse=True)print(car_names)  #按列表的字母顺序的倒序的排列

3.打印这个列表的长度

car_names=['BMW','Audi','Benz','Toyota']print(len(car_names))

本期习题:

  1. 自定义一个列表,遍历这个列表中的元素,并打印出来

  2. 使用切片获取这个列表中第二个到最后一个元素,遍历这个切片,并打印出这个切片内的所有元素 

  3. 定义一个range(1,10)的数值列表 ,求这个列表的总和,最大值,最小值

更多免费资料,关注公众号获取

2c53956e40e9b00031476e939ed5f93b.gif

d4dadc4add3adb07f0c11caaf1ffe580.png

周六周末不更新哦

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值