Python学习-列表和for循环

本文详细介绍了Python中的列表数据结构,包括列表的介绍、访问方式、操作及函数方法。此外,还探讨了for循环和range()函数的用法,提供了多个示例以帮助读者更好地理解和应用这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 列表

1.1 列表的介绍

  • 数据结构:计算机中数据的存储方式
  • 序列:Python中最基本的数据结构。序列的每个元素都分配了一个数字 ,即它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
  • 序列进行的操作:索引,切片,加,乘,检查成员。
  • Python有6个序列的内置类型(即6个标准数据类型),其中最常见的是列表和元组。
  • 列表:也是一个对象,可以用方括号[]进行创建,各个元素之间使用逗号分开,列表的包容性很强,可以保存任意的对象。使用list()函数可以将其他数据类型转换为列表类型。
# 创建一个列表
a=[1,'haha',True,None]
print(type(a),a)
b='hello'
c=list(b)
print(type(c),c)

执行结果为:

<class 'list'> [1, 'haha', True, None]
<class 'list'> ['h', 'e', 'l', 'l', 'o']
  • 列表的作用:保持多个有序的数据(除非手动更改,否则顺序是不会改变的)

1.2 列表的访问

  • 我们可以通过索引(index)来获取列表中的元素。
    注意
    (1)索引从0开始,最大索引值不能超过列表本身的长度。
    (2)列表从右往左访问的索引值从-1开始,倒数第一个元素的索引值为-1,倒数第二个元素的索引值为-2,以此类推,即索引值为负数表示反向访问。
#   访问列表
list_one=[1,'hah',True,None]
print(list_one[1])	# 输出列表的第二个元素'hah'
print(list_one[4])	# IndexError: list index out of range
print(list_one[-3])	# 输出列表的第二个元素'hah'
  • len()函数可以获得列表的长度或者元素的个数。
a=[1,'haha',True,None]
print(len(a))	# 输出结果为4

可以看到,列表的长度其实就是列表最大的索引值+1。

  • 切片:指从现有列表中获取一个子列表。通过切片可以获取指定的元素,语法为
    list[开始位置:结束位置:步长]
    注意:
    (1)切片返回的元素中不包含结束位置的元素(左闭右开)
    (2)开始位置和结束位置可以省略,省略开始位置表示从第一个元素开始切片,省略结束位置表示开始位置切片至列表的最后一个元素。
    (3)步长默认值为1,可以省略。
    (4)步长如果为负数,表示反向切片
#   列表切片
list_two=['c','c++','java','python','R','SAS']
print(list_two[2:4])	# ['java', 'python']
print(list_two[2:])		# ['java', 'python', 'R', 'SAS']
print(list_two[:4])		# ['c', 'c++', 'java', 'python']
print(list_two[1:4:2])	# ['c++', 'python']
print(list_two[-1:-4:-1])	# ['SAS', 'R', 'python']
print(list_two[::2])	# ['c', 'java', 'R']
print(list_two[::-2])	# ['SAS', 'python', 'c++']
  • 列表拼接和重复:+号可以拼接两个列表,*号可以重复列表(*号后面的数字是重复的次数)
# 列表拼接和重复
lst=[1,2]+[3,4]
print(lst)	# [1, 2, 3, 4]
nlst=[1,3,5]*3
print(nlst)	# [1, 3, 5, 1, 3, 5, 1, 3, 5]
  • 修改列表:可以使用索引值来指定列表元素的修改
#   修改列表
list_three=['haha', 'hello', 'hey''wow']
list_three[2]='你好'
print(list_three)	# ['haha', 'hello', '你好']
#	通过切片进行修改时,必须传递一个序列
list_three[0:2]='abc'
print(list_three)	# ['a', 'b', 'c', '你好', 'wow']
#	向索引为0的位置插入元素
list_three[0:0]='d'
print(list_three)	# ['d', 'a', 'b', 'c', '你好', 'wow']
#	当设置了步长,序列中元素的个数必须和切片中元素的个数保持一致
list_three[::2]=['e','f','heihei']
print(list_three)	# ['e', 'a', 'f', 'c', 'heihei', 'wow']
#   可以通过切片来删除元素
list_three[1:3]=[]
print(list_three)	# ['e', 'c', 'heihei', 'wow']

1.3 列表的函数&方法

在Pycharm输入list. 就会显示列表的一些方法,如图所示:
在这里插入图片描述

函数描述
len(list)显示列表元素个数或列表长度
max(list)返回列表元素最大值
min(list)返回列表元素最小值
list(seq)将其他序列类型转换为列表
del list[索引值]删除指定索引值的元素
方法描述
list.append(obj)在列表末尾添加新的对象
list.clear()清空列表
list.copy()复制列表
list.count(obj)统计某个元素在列表中出现的次数
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj,start,stop)从列表中找出某个值第一个匹配项的索引位置,start和stop这两个参数可以省略,不省略的情况下表示在start和stop这段索引区间找出第一个匹配项的索引位置
list.insert(index,obj)在索引位置的前面将对象插入列表中
list.pop(index=-1)移除列表中的一个元素(默认是最后一个元素),并且返回该元素的值
list.remove(obj)移除列表中某个值的第一个匹配项
list.reverse()反向列表中元素
list.sort(key=None,reverse=False)对原列表进行排序(默认是升序)
#   列表函数和方法
list_four=[1,3,2,6,4,5]
list_four.append(2)
print(list_four)	# [1, 3, 2, 6, 4, 5, 2]
list_test=list_four.copy()
print(list_test)	# [1, 3, 2, 6, 4, 5, 2]
list_test.clear()
print(list_test)	# []
print(list_four.count(2))	# 2
list_four.extend([3,5,4])
print(list_four)	# [1, 3, 2, 6, 4, 5, 2, 3, 5, 4]
print(list_four.index(3))	# 1
print(list_four.index(3,2,8))	# 7
list_four.insert(3,0)
print(list_four)	# [1, 3, 2, 0, 6, 4, 5, 2, 3, 5, 4]
print(list_four.pop())	# 4
list_four.remove(0)
list_four.reverse()
list_four.sort(key=None,reverse=False)
print(list_four)	# [1, 2, 2, 3, 3, 4, 5, 5, 6]

1.4 for循环和range()函数

  • Python的for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
  • for循环的一般格式如下:
for <variable> in <sequence>:
    <statements>
else:
    <statements>

示例1:

list_five=[1,3,'hello',6,'haha',5]
for i in list_five:
    print(i)

执行结果:

1
3
hello
6
haha
5

示例2:

str_list = ["Baidu", "Google","alibaba","Taobao"]
for i in str_list:
    if i == "alibaba":
        print("阿里巴巴!")
        # 遇到alibaba就会跳出循环体
        break
    print("循环输出 " + i)
else:
    print("没有循环数据!")
print("完成循环!")

执行结果:

循环输出 Baidu
循环输出 Google
阿里巴巴!
完成循环!
  • range()函数:可以生成数列,其语法为range(开始值,结束值,步长)
    注意:
    (1)range()函数生成的数列不包含结束值,默认步长为1;
    (2)不指定开始值表示从0开始;
    (3)开始值、结束值、步长均可以是负数。
# 遍历数字序列
# 输出0到4
for i in range(5):
    print(i)
# 输出5到8
for i in range(5,9):
    print(i)
# 输出5和7
for i in range(5,9,2):
    print(i)
# 输出-5和-7
for i in range(-5,-9,-2):
    print(i)
  • 结合range()和len()函数可以遍历一个序列的索引
a = ['aa', 'bb', 'cc', 'dd', 'ee']
for i in range(len(a)):
    print(i, a[i])

执行结果:

0 aa
1 bb
2 cc
3 dd
4 ee
  • 使用range()函数来创建一个列表:
lst=list(range(5))
print(lst)	# [0, 1, 2, 3, 4]
  • break、continue、pass这三个关键字对for循环同样适用,效果和while循环一样。
# 输出2到10的所有质数
for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(n, '等于', x, '*', n//x)
            break
    else:
        # 循环中没有找到元素
        print(n, ' 是质数')

执行结果:

2  是质数
3  是质数
4 等于 2 * 2
5  是质数
6 等于 2 * 3
7  是质数
8 等于 2 * 4
9 等于 3 * 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值