循环语句和列表元素

1. for循环
由于while循环最大的问题就是始终要考虑循环次数的问题,那么有什么方法不用考虑呢?

for i in range 'Python':
	print(i)
执行的结果为

python 循环打印出对象 python打印循环次数_列表


依次打印它每个字符

在这里,字符串的长度决定循环次数,取完字符串的内容,循环就结束了。

  • for循环可以吧字符串里面的每个元素都依次取出来,自动赋值给变量i,然后再执行循环体内的代码块
  • for循环不需要考虑次数,循环次数由后面的对象长度来决定
for i in range(10):
	print(i,end=',')

结果如下


首先说下range的意义,range函数可以取到一个范围内的整数,相比while要简单很多,也是常用在for循环里面的一个取整函数
print里面的end可以设置每个值打印之后输出的字符串是否换行,用什么形式换行


for循环总结:
	for循环又称为计数循环(遍历循环),是因为for循环次数由可迭代对象来决定
	我们学过的字符串就是可迭代对象,以及我们后面要学的列表、元组、字典、集合等都属于可迭代对象。


循环次数
	for循环次数由被循环的 可迭代对象决定
	range(x)
	输出从0到x-1的整数(掌握其用法)
	变量值不受影响
	如上例子,i的值不受循环体中代码的影响,下次循环依旧按照循环来赋值

2. continue
思考一:现在在循环的过程中,只要数字能够整除2和3就跳过,进入下一次循环该怎么做
思考二:上一次我们说了循环可以被break终止,那能不能不终止循环,只跳过一次循环呢

for i in range(10):
	if i%2==0 and i%3==0:
		continue
	else:
		print(i,end=',')

python 循环打印出对象 python打印循环次数_python 循环打印出对象_02


continue会跳过本次循环,即结束本次循环,进入下一个循环

我们来分析一下,i通过循环会依次为0,1,2,3,4,5,6,7,8,9,里面有个判断条件,如果i能整除2和3就continue,当i为o时,它是不是满足条件,执行continue,意思就是直接进入下一个循环也就是i为1的时候,不会再去看下面的代码,当为6的时候也是如此,所以它不会打印0和6,因为0和6都能整除2和3.

for i in range(100):
	if i % 2 == 0 or i % 3 == 0:
		continue
	elif i % 15 == 0:
		break
	else:
		print(i,end=',')
else:
	print("循环结束")

想想这个执行下去会是什么?
结果如下:


结果是这样,是不是有点想不通,不是里面有break吗,为什么都执行完了。还输出了“循环结束呢”
分析一下,当i到15的时候,15是可以整除3的所以,不会执行下面的语句,当i等于30的时候呢,他也是能整除2和3的,所以还是不会执行下面的语句的,一直到15的倍数都是不会被执行的。因为上面的条件直接continue了他,所以一直回到循环结束
那我们改一下如下

for i in range(100):
	if i % 2 == 0 or i % 3 == 0:
		continue
	elif i % 11 == 0:
		break
	else:
		print(i,end=',')
else:
	print("循环结束")

这个的执行结果会是怎样呢
结果如下


自己分析,我想你已经明白了continuebreak的用法了吧。

3. 列表推导式
思考一:现在我想得到100内所有的偶数,该怎么做呢?
思考二:我们都知道print是不能把值赋给变量,现在就是要存储这些值该怎么做呢?
思考三:存储这些值有什么好的方法不用那么多变量呢?

for i in range(100):
	if i % 2 == 0:
		print(i)

上面的代码就可以打印出所有100以内的偶数


可以是我们要把结果存储起来怎么弄,接下来就要用到列表了

list = []
for i in range(100):
	if i % 2 == 0:
		list.append(i)
print(list)

结果如下

python 循环打印出对象 python打印循环次数_python_03


是不是和之前一样了

python 循环打印出对象 python打印循环次数_编程语言_04


上面的list就是一个列表,我们已经把100以内的偶数添加到list这个列表里面去了,list.append(i)就是把i的值添加到list的列表里面,’.append()’是吧一个值加到列表的后面。

我们可以简洁一点,用三目运算,如下

list = [i for i in range(100) if i % 2 == 0]

python 循环打印出对象 python打印循环次数_数据结构_05


是不是一个道理,上面那个代码就叫列表推导表达式

我们来解释下列表推导表达式,‘i’是保存在列表中的值,‘for i in range(100)’是for循环来得到的值,‘if i % 2 == 0’是if用来判断对值进行筛选,‘[]’表示一个列表

总结:列表推导式可以快速生成一个列表,并能筛选列表的值

4. 列表
思考一:列表是干什么的?
思考二:我们要放好多东西,比如一个人的身高、年龄、性别,有的是字符串,有的是数字,如果分开放会很不方便,能不能放一起呢?

list_one = ['xiaoyu', '男', '175', 120]

上面这个列表就可以放字符串也可以放数字,初次之外,列表里面几乎可以放python的任何对象

  • 列表的索引取值

    列表中每个元素在列表中的位置称为索引(index),可以通过索引值来取对应位置上的值
索引值是从0开始
 负索引就是从列表尾往前数
 索引值超过长度就会报错
  • 列表的切片

    列表还可以根据一个范围来取值,这叫做切片
切片是两个范围之间取值,且后面的数取不到
 切片时超过范围也没关系
 切片时还可以指定步长

- 列表的增删改查

python 循环打印出对象 python打印循环次数_python 循环打印出对象_06


查找:可以根据元素,找到元素的索引值

python 循环打印出对象 python打印循环次数_python 循环打印出对象_07


添加元素三个方法:append、extend、insert

python 循环打印出对象 python打印循环次数_编程语言_08


如果是直接两个列表相加,记得重新赋值

python 循环打印出对象 python打印循环次数_列表_09


替换:利用索引取值可以直接替换

python 循环打印出对象 python打印循环次数_编程语言_10


删除:pop、remove、del、clear四种,删除是不可逆的,所以删除钱要确定好。

  • 列表的其他方法

    复制:复制列表,类似于保存快照

    count:可以统计列表中某个元素出现的次数,也属于查找

    reverse:是将列表顺序颠倒过来,没有排序

python 循环打印出对象 python打印循环次数_python_11


sort:对列表中元素进行排序,采用Tomsort算法进行排序

python 循环打印出对象 python打印循环次数_python 循环打印出对象_12


sorted:临时排序- 不可变的“列表”一元组

python 循环打印出对象 python打印循环次数_python_13


上述为元组

元组:类似列表,可以进行索引取值,单元素不能更改,一旦确定,就无法改变

python 循环打印出对象 python打印循环次数_python_14


如果元组只有一个元素,要在后面跟上逗号,否则只会当做一个元素而不是元组

python 循环打印出对象 python打印循环次数_python_15


拆包:元组可以同时赋值给多个变量,只要变量个数不超过元组长度,变量前面加上*号则可以将多余元素都接受,并组成一个列表。

5. 作业

  • 用for循环打印出99乘法口诀
  • 一个列表中有重复元素,编写程序,移除重复元素
    列表:li = [1,1,1,2,2,3,3,3,3,3,3,4,4,5,6,5,6]
ok,下次揭晓答案!!!!

上期作业代码如下
1、while99乘法表

i = 1
while i <=9:
    j = 1
    while j < i+1:
        print(f'{j}x{i}={j*i}',end='\t')
        j += 1
    print()

python 循环打印出对象 python打印循环次数_python 循环打印出对象_16


2、简单的猜数字游戏

import random
a = random.randint(1,100)
i = 1
while i <= 5:
    b = int(input('请输入你猜的一个数:'))
    if b > a:
        print('大了')
    elif b < a:
        print('小了')
    else:
        print(f'第{i}次你终于猜对了')
        break
    i += 1
else:
    print(f'{i-1}机会已经用完,下次加油哦!')

python 循环打印出对象 python打印循环次数_列表_17