Python基础语法(三)

简介: Python基础语法

4 列表和元组

列表可以认为是Python里的数组,并且功能更丰富简便!

4.1 列表

4.1.1 创建列表

创建列表主要有两种方式. [ ] 表示一个空的列表。类型为:list

定义示例:

#定义一个列表a和一个列表b
a = []
b = list()
print(type(a))
print(type(b))

定义示例:可以直接用print打印列表

a = [1, 2, 3, 4]
print(a)

列表可以存放不同类型的元素,如下代码:

a = ['a', 1, "hello"]
print(a)

4.1.2 访问下标

可以通过下标访问操作符 [ ] 来读取或修改列表中的任意元素.

演示示例:

#定义列表a
a = [1, 2, 3, 4]
#取下标为1的元素
print(a[1])
#将下标为1的元素修改为0
a[1] = 0
print(a)

上述代码使用[],访问了下标为1的元素,并将其修改为0。

访问下标超出列表的范围会抛异常:

a = [1, 2, 3, 4]
print(a[100])

访问下标支持负数访问:

a = [1, 2, 3, 4]
#访问倒数第一个元素
print(a[-1])

4.1.3 切片操作

通过切片,一次取出一组连续的元素,相当于得到一个子列表。

使用 [ : ]的方式进行切片。

例如a[1:3]表示的是[1,3)的左闭右开区间的元素。并且支持省略前后边界。

代码演示:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#对部分元素切片
print(a[5:7])
#省略前半部分
print(a[:3])
#省略后半部分
print(a[6:])
#省略所有
print(a[:])

还可以指定第三个参数,‘步长’,并且‘步长可以为负数’:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#步长为2
print(a[0:5:2])
#步长为3
print(a[::3])
#步长为4
print(a[::4])
#步长为负数
print(a[::-2])
print(a[::-3])

切片越界也不会有负面效果,会输出可能包括的所有元素:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(a[5:100])
print(a[200:300])

切片是个很高效的操作,进行切片的时候,只是取出了原有列表的一个部分,并不涉及到数据的‘拷贝’

4.1.4 遍历列表

使用for或while遍历列表

#最简便的遍历,依次取出各个元素的值,并打印
a = [1, 2, 3, 4]
for elem in a:
    print(elem)
#生成下标再访问
for i in range(0,len(a)) :
    print(a[i])
#按下标范围遍历,手动控制下标变化
i=0
while i<len(a):
    print(a[i])
    i+=1

4.1.5 列表元素操作

append:向链表末尾插入一个元素(尾插)

insert:向任意位置插入一个元素。

in :查找元素是否在列表里,返回值是布尔类型。

not in :元素是否不在列表里面。

index():查找元素在列表中的下标。

pop :直接删除末尾元素(尾删)或者按下标来删除元素。

remove:按照值来删除元素。

操作演示:

a = ['zhangsan', 'lisi', 'wangwu']
print(f'原列表a={a}')
#向链表末尾插入一个元素
a.append('zhaoliu')
print(f'尾插后a={a}')
#向第一个位置插入一个元素
a.insert(1,'heihei')
print(f'第一个位置插入后a={a}')
#查找元素是否在列表里
print('zhangsan' in a)
print('zhangsan' not in a)
#查找元素,如果在列表里返回下标,不在抛异常
print(f'查找下标为:{a.index("zhangsan")}')
#尾删
a.pop()
print(f'尾删后a={a}')
#指定下标删除
a.pop(1)
print(f'删除第一个位置后a={a}')
#按照值来删除元素
a.remove('lisi')
print(f'删除"lisi"后a={a}')

4.1.6 列表拼接操作

+ :把两个列表拼接起来,生成一个新列表(不改变原来的列表)。

extend :相当于把列表拼接到另一个列表的后面(直接在原来的列表上拼接)

# +不改变原来的列表,会生成新的列表
a =[1, 2, 3, 4]
b= [5, 6]
print(a+b)
print(a)
print(b)
#extend会在原来的基础上扩大列表
a = [1, 2, 3, 4]
b = [5, 6]
a.extend(b)
print(a)

4.2 元组

元组的功能和列表相比,基本一致(用[]来进行访问)。只不过元组不能修改里面的元素, 列表则可以修改里面的元素

元组定义:

atuple = ( )

atuple = tuple()

像读操作,比如访问下标, 切片, 遍历, in, index, + 等, 元组也是一样支持的.
但是, 像写操作, 比如修改元素, 新增元素, 删除元素, extend 等, 元组则不能支持.

4.3 字典

字典是一种存储键值对的结构。

把键(key)和值(value)进行一个一对一的映射, 然后就可以根据键, 快速找到值。

4.3.1 创建字典

创建一个空字典,使用{key:value}表示字典(dict)。

创建一个空字典:

a = {}
b = dict()
print(a)
print(b)

创建的时候为元组指定初始值:

a = {'id': 12345, 'score': 100, 'name': 'xiaoming'}
print(a)
# 为了代码更美观,可以这样写
a = {'id': 12345,
     'score': 100,
     'name': 'xiaoming'
     }

键值对之间使用逗号分割, 键和值之间使用冒号(:)分割. (冒号后面推荐加一个空格).

4.3.2 查找key

使用 in 可以判定 key 是否在字 中存在。返回布尔值

a = {'id': 12345,
     'score': 100,
     'name': 'xiaoming'
     }
print('id' in a)
print('id' not in a)

使用方括号[],来访问元组的元素:

a = {'id': 12345,
     'score': 100,
     'name': 'xiaoming'
     }
#用键访问字典中的值
print(a['id'])
print('name')

如果要访问的key不在字典中,则会抛异常。

4.3.3 新增/修改元素

使用[ ] 可对字典中的数据修改,若字典中有该数据,则直接修改。若没有该数据,则在字典中新插入一个数据。

代码示例:

a = {'id': 12345,
     'score': 100,
     'name': 'xiaoming'
     }
#元组中有该数据,直接修改
a['id'] =11111
print(a)
#元组中无该数据,直接添加键值对
a['tele'] = 88888888
print(a)

4.3.4 删除元素

使用pop根据key删除对应键值对

a = {'id': 12345,
     'score': 100,
     'name': 'xiaoming'
     }
print(a)
#删除key ='id'的键值对
a.pop('id')
print(a)

4.3.5 遍历字典元素

直接使用 for 循环能够获取到字典中的所有的 key, 进一步的就可以取出每个值了.

代码示例:

a = {'id': 12345,
     'score': 100,
     'name': 'xiaoming'
     }
for key in a:
    print(key,a[key])

字典特有操作:

  • 使用 keys 方法可以获取到字典中的所有的 key
  • 使用 values 方法可以获取到字典中的所有 value
  • 使用 items 方法可以获取到字典中所有的键值对.

代码示例:

a = {'id': 12345,
     'score': 100,
     'name': 'xiaoming'
     }
print(a.keys())
print(a.values())
print(a.items())

4.3.6 合法的key(可哈希的key)

不是所有的类型都可以作为字典的 key.

字典本质上是一个哈希表, 哈希表的 key 要求是 “可哈希的”, 也就是可以计算出一个哈希值。

但凡能够计算出哈希的值的元素,都可以作为字典的key:

print(hash(0))
print(hash(3.14))
print(hash('hello'))
print(hash(True))
print(hash(()))         # ( ) 是一个空的元组

列表和字典不可作为字典的key

5. 文件操作

5.1 打开文件

使用内建函数 open打开文件

f = open(‘d:/test.txt’, ‘r’)

1.第一个参数是一个字符串, 表示要打开的文件路径

2.第二个参数是一个字符串, 表示打开方式. 其中 r 表示按照读方式打开. w 表示按照写方式打开. a表示追加写方式打开.

如果打开文件成功, 返回一个文件对象f. 后续的读写文件操作都是围绕这个文件对象展开.

如果打开文件失败(比如路径指定的文件不存在), 就会抛出异常.

#打开文件
f = open('E:/text.txt', 'r')
f.close()

5.2 关闭文件

当我们不使用文件时,我们要讲文件关闭!

使用f.close关闭文件。

一个程序能打开文件的数量是有上限的:

flist = []
count = 0
while True:
    f = open('E:/text.txt', 'r')
    flist.append(f)
    count += 1
    print(f'count = {count}')

可以看出,当文件打开到一定数量的时候,就会抛异常

5.3 写文件

文件打开之后就可以写文件了

使用f.write的方法写文件

# 以写的方式打开文件    
f = open('E:/text.txt', 'w')
f.write('hello\n')
f.write('world !')
f.close()

换行也可以写进去

追加写:

由于每次使用 w 方式打开文件,每次都会清空文件,因此我们追加数据时用 a 来打开文件

# 以写的方式打开文件
f = open('E:/text.txt', 'w')
f.write('hello\n')
f.write('world !')
f.close()
#以追加的方式打开文件,不清空数据
f = open('E:/text.txt', 'a')
f.write('haha')
f.close()

5.4 读文件

读文件需要使用 r 的方式打开文件

使用f.read()方法完成读文件,参数表示读几个字符。

读字符文档:

# 以读的方式打开文件
f = open('E:/text.txt', 'r')
#读两个字符
a = f.read(2)
print(a)

读中文文档:

因为中文的编码有好几种,比较常见的就是GBK或者UTF-8,为了防止编码错误,我们需要对open函数输入第三个关键字参数,指定一下打开格式:

# 以读的方式打开文件
f = open('E:/text.txt', 'r',encoding='utf8')
#读十个字符
a = f.read(10)
print(a)
f.close

5.5 上下文管理器

防止我们忘记关闭文件,python提供了上下文管理器,来帮助我们自动关闭文件

  • 使用 with 语句打开文件.
  • 当 with 内部的代码块执行完毕后, 就会自动调用关闭方法
with open('d:/test.txt', 'r', encoding='utf8') as f:
    lines = f.readlines()
    print(lines)

以上是Python基础知识部分介绍,后续会继续补充,如有问题,恳请大佬指点💖

目录
相关文章
|
1月前
|
人工智能 Ubuntu IDE
【Python】基础:环境配置与基础语法
本文介绍了Python编程语言及其环境配置方法。Python由Guido van Rossum于1991年创建,以其简洁、易学和强大的功能著称。文章详细讲解了Python的主要特点、Windows和Ubuntu下的安装配置步骤、基础语法、控制流、函数、文件操作、模块使用及面向对象编程等内容,帮助读者快速入门Python编程。
56 4
|
3月前
|
XML 前端开发 数据格式
三分钟搞定 Python XPath 语法
XPath(XML Path Language)是一种用于在 XML 文档中查找信息的语言。它基于树状结构的 XML 文档,可以通过路径表达式来选取节点或节点集。也常常用来解析 HTML。 如果你是一个前端,对用路径获取元素可能陌生又熟悉。陌生是很多的路径,熟悉的路径上又有熟悉的属性和方法。下面我们就来探究一下 XPath 的魅力。
|
13天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
24天前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
20 2
|
29天前
|
存储 程序员 开发者
Python编程入门:从零开始掌握基础语法
【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!
|
1月前
|
存储 C语言 索引
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
本文全面介绍了Python的基础知识,包括Python的诞生背景、为什么学习Python、Python的应用场景、Python环境的安装、Python的基础语法、数据类型、控制流、函数以及数据容器的使用方法,旨在为Python零基础读者提供一篇全面掌握Python语法的博客。
44 0
Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法
|
1月前
|
存储 数据可视化 数据处理
【Python篇】快速理解Python语法:全面指南
【Python篇】快速理解Python语法:全面指南
48 1
|
2月前
|
Java Linux C++
30天拿下Python之基础语法
30天拿下Python之基础语法
30 4
|
2月前
|
IDE Java 开发工具
Python的语法
Python的语法。
37 5
|
2月前
|
存储 数据挖掘 程序员
揭秘Python:掌握这些基本语法和数据类型,你将拥有编程世界的钥匙!
【9月更文挑战第3天】Python 是一种简洁强大的高级编程语言,其清晰的语法和丰富的功能深受程序员喜爱。本文从基本语法入手,介绍 Python 的代码结构特点,如通过缩进区分代码块,使逻辑更清晰。接着详细讲解主要数据类型:数值型、字符串、列表、元组、集合与字典,每个类型均附有示例代码,帮助初学者快速掌握 Python,为后续学习打下坚实基础。
46 2
下一篇
无影云桌面