python:语法知识-1

计算思维 Computational Thinking

1、核心特征:

  • Abstraction(抽象)
  • Automation(自动化)

2、 e.g:

  • 递归思维(Hanoi),并行处理。 代码 ⟷ 译出 数据 代码 \stackrel{\text{译出}}{\longleftrightarrow} 数据 代码译出数据
  • 约简、嵌入、转化、仿真
  • 抽象、分解

Python解释器

CPython用>>>作为提示符,IPython用ln [序号]:作为提示符

1、CPython:

  • 在命令行下运行python就是启动CPython解释器
  • 用C语言开发

2、IPython:

  • 基于CPython之上的交互式解释器

3、PyPy

采用JIT技术,动态编译(不是解释)→显著提高Python代码执行速度

4、Jython运行在Java平台

可以直接把Python代码编译成Java字节码执行

5、IronPython运行在微软.Net平台

和Jython类似,可以直接把Python代码编译成**.Net的字节码**
如果要和Java或.Net平台交互,最好通过网络调用来交互,而不是用Jython/IronPython,确保各程序之间的独立性


Python交互模式:

命令行模式下敲命令python,然后进入到Python交互模式,提示符是>>>


内容的输入输出

1、输出print():

可以接受多个字符串,“,”隔开,可连成一串输出
依次打印每个字符串,遇到“,”输出一个空格

2、输入input()

可让用户输入字符串,并存放到变量里


标识符

用于变量、函数、类、模块等的名称

  • 区分大小写
  • 第一个字符必须是字母、下划线,其后字符是:字母、数字、下划线
  • 不能使用关键字,如: if, or, while
  • 双下划线开头和结尾 → \to 特殊含义,如:__init__是类的初始函数

async声明异步,await等待异步


对象——Python中一切皆对象

对象本质:一个内存块,拥有特定值,支持特定类型的相关操作
每个对象由标识identity、类型type、value值组成

1.identity:

唯一标识对象,对应于对象在内存中的地址
内置函数id(obj)→返回对象obj标识

2.type:

对象存储的"数据"类型。类型可以限制对象取值范围以及可执行操作type(obj)→对象所属类型

3.value:

对象所存储的数据的信息
print(obj)→直接打印出值

内存中对象存储


变量赋值基础

  1. X=y=z=9:链式赋值, Xyz 都赋值为 9

  2. X, y, z = 9, 8, 7:序列解包赋值,X9y8z7

  3. *y = 9, 8, 7:不合法, *y→对 y 进行解包,但前面没有变量名接收值

  4. x = 9,8,7:不合法


Python数据类型

  1. Basic/Primitive –Int, Float, Complex, Bool, String
  2. Container/Collections –List, Tuple, Set, Dictionary
  3. None
  4. User Defined –class
  5. bytes

1.可变对象(mutable object):

字典、列表、集合、自定义对象(依赖用户定义的对象特征)
可变对象的值能被修改

2.不可变对象(immutable object) :

数字、字符串、元组、None等,不可变对象的访问速度更快
不可变对象一旦被创建,其id与type便无法再修改


变量类型 - type() 函数


类型转换

1.隐式(向上转换)

Implicit Type Casting (or Implicit TypeConversion or Upcasting

2.显式类型转换


Python二进制、八进制和十六进制:

1.bin()

100→二进制数,前缀 “0b”

2.oct()

100→八进制数,前缀 “ 0o ”

3.hex()

100→十六进制数,前缀 “0x”


Python字符串——字符的集合

  • Python将字符串存储为一个序列,可使用索引位置访问序列中的任何元素
  • 使用单或双引号创建字符串

1.转义字符

2.多行字符串

  • 单/双三引号创建多行字符串,它还将保留制表符和空白

3.[:]

4.+ *

str = 'Hello World!'
print (str) # Prints complete string
print (str[0]) # Prints first character of the string
print (str[2:5]) # Prints characters starting from 3rd to 5th(包头不包尾)
print (str[2:]) # Prints string starting from 3rd character
print (str * 2) # Prints string two times
print (str + "TEST") # Prints concatenated string
输出:Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST

5.Various String Operators(gpt提供)

+Concatenation连接

*Repetition

[]Slice:str[i]

[:]Range Slice

str[i:j] 返回从索引 i 到 j(不包括 j)的子串

in - Membership:

x in str 子串 x 存在于str 中,返回 True。

not in - Membership:

x not in str 子串 x 不存在于 str 中,返回 True

r/R - Raw String原始字符串:

创建原始字符串,不对转义序列进行解释
e.g:r"\n"

% - Format格式化:

字符串格式化
%s - 字符串   %d - 整数
%f - 浮点数   %.2f - 浮点数替换,保留两位小数


字符串方法(gpt提供)

这张名为 “image.png” 的图片似乎是一个关于 Python 字符串方法的参考表或列表。它列出了一系列常用的 Python 字符串方法,以及它们的基本用途。下面是每个方法的简要说明:

  1. join(seq):将序列中的元素连接成一个字符串,元素之间用调用 join() 方法的字符串分隔。

  2. capitalize():第一个字母大写,其余字母小写。

  3. lower():所有大写字母→小写

  4. upper():所有小写字母→大写

  5. title():每个单词首字母大写

  6. swapcase():大写字母→小写,小写字母→大写

  7. count(str, beg=0, end=len(string)):返回子串 str 在给定范围内出现的次数

  8. len(string):返回字符串长度

  9. translate(table, deletechars=""):根据给定转换表 table 替换字符串中的字符,deletechars 中的字符将被删除

  10. rindex(str, beg=0, end=len(string)):从末尾开始查找子串 str,返回第一次出现的索引,未找到则抛出异常。

  11. max(str):返回最大字符

  12. find(str, beg=0, end=len(string)):从开始查找子串 str,返回第一次出现的索引,未找到则返回 -1

  13. rjust(width, [, fillchar]):右对齐,给定宽度,fillchar 填充空白

  14. index(str, beg=0, end=len(string)):从开始查找子串 str,返回第一次出现的索引,未找到则抛出异常。

  15. rfind(str, beg=0, end=len(string)):从末尾开始查找子串 str,返回最后一次出现的索引,未找到则返回 -1

  16. ljust(width[, fillchar]):左对齐,给定宽度,fillchar 填充空白

  17. replace(old, new[, max]):将字符串中的 old 子字符串替换为 new 子字符串,最多替换 max

  18. min(str):返回最小字符

  19. center(width, fillchar):居中,给定宽度,fillchar 填充空白

  20. isspace():字符串是空白字符(空格、制表符、换行符)返回 True

  21. isalpha():字符串至少有一个字符且所有字符都是字母返回 True

  22. isalnum():字符串至少有一个字符且所有字符都是字母/数字返回 True

  23. istitle():字符串标题化的(每个单词首字母大写)返回 True

  24. isdecimal():字符串只包含十进制数字返回 True

  25. isnumeric():字符串只包含数字字符返回 True

  26. islower():所有字母小写返回 True

  27. isdigit():字符串只包含数字返回 True

  28. isupper():所有字母大写返回 True

  29. split(str="", num=string.count(str)):将字符串分割成多个子字符串,str 分隔符,num 最大分割次数

  30. splitlines([keepends]):将字符串分割成多行,每行作为列表的一个元素,keepends 决定是否保留行尾的换行符

  31. lstrip():去除左侧空白字符

  32. rstrip():去除右侧空白字符

  33. strip([chars]):去除2侧指定字符(默认为空白字符)

  34. expandtabs(tabsize=8):将字符串中的制表符扩展为一定数量的空格,tabsize 是扩展的空格数

  35. endswith(suffix, beg=0, end=len(string)):检查字符串是否以 suffix 结尾

  36. startswith(substr, beg=0, end=len(string))

  37. bytes.decode(encoding="utf-8", errors="strict"):解码为字符串

  38. maketrans():转换表

  39. encode(encoding='UTF-8', errors='strict'):编码为字节对象,encoding 编码格式,errors 错误处理方案


列表 List

list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print (list) # Prints complete list
print (list[0]) # Prints first element of the list
print (list[1:3]) # Prints elements starting from 2nd till 3rd
print (list[2:]) # Prints elements starting from 3rd element
print (tinylist * 2) # Prints list two times
print (list + tinylist) # Prints concatenated lists
输出:['abcd', 786, 2.23, 'john', 70.2]
abcd
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.2, 123, 'john']
list=['physics','chemistry', 1997, 2000]
print(list)
del list[2]
print ("After deleting value at index 2 : ", list)
输出:['physics', 'chemistry', 1997, 2000]
After deleting value at index 2 :  ['physics', 'chemistry', 2000]

这张名为 “image.png” 的图片包含了一个关于 Python 列表(list)方法的概述。列表是 Python 中的一种数据结构,用于存储有序的元素集合。图片中列出的是一些常用的列表方法,每个方法后面跟着一个简短的描述。下面是每个方法的详细解释:

List Methods(参考gpt)

  1. list.append(obj)
    列表末尾添加元素 obj

  2. list.extend(seq)
    将一个序列 seq 的元素添加到列表末尾

  3. list.pop(obj=list[-1])
    移除列表中的一个元素(默认是最后一个元素),并返回该元素

  4. list.clear()
    清空所有元素

  5. list.remove(obj)
    移除列表中第一个匹配的元素 obj

  6. list.insert(index, obj)
    在指定位置 index 插入元素 obj

  7. list.reverse()
    颠倒元素顺序

  8. list.sort([func])
    排序。func 是一个可选的排序函数,提供自定义排序逻辑

  9. list.count(obj)
    返回 obj 在列表中出现次数

  10. list.index(obj)
    返回 obj 在列表中首次出现的索引位置

nums= [1, 2, 2, 2, 3, 4, 2]
for num in nums:
 print(num)
 if (num== 2):
     nums.remove(2)
print(nums)
输出:
1
2
2
4
2
[1, 3, 4, 2]
  1. sort()
    排序,没有返回值。

  2. reverse()
    颠倒,没有返回值。

  3. sorted()
    内置函数,对任何可迭代对象进行排序,并返回一个新的排序列表

  4. reversed()
    内置函数,用于返回一个逆序序列的迭代器,它不会改变原始列表。

  5. sorted() 函数参数:sorted(itrearble, key=None, reverse=False)

  • iterable:要排序的可迭代对象。
  • key:函数,用来在进行比较之前对每个元素进行转换,排序会基于转换后的值进行。
  • reverse:布尔值, True降序排序
  1. 列表切片 [::-1]
  • List[::-1] 不改变原始列表,而是返回一个新的逆序列表。
s = 'acbegscVAB'
result = sorted(s, reverse=True)# 将字符串 `s` 降序排序
print(result)
输出:
['s', 'g', 'e', 'c', 'c', 'b', 'a', 'V', 'B', 'A']

元组 tuple——tup = () 创建一个空元组

单元素元组的表示 (1, )

序列与其他类型的对比——词典排序

序列对象可以与具有相同序列类型的其他对象进行比较
词典排序使用 Unicode 代码点编号对单个字符排序
对前2个项目进行比较,两者不同则决定比较结果

相等则对下2个项目进行比较,依此类推

2个项目本身是同一类型序列,递归词性比较

2个序列的所有项目比较结果相等→相等

一个序列是另一个序列的初始子序列,则较短序列是较小/少的序列
使用 < 或 > 比较不同类型的对象合法的前提是对象具有适当的比较方法
混合数值类型根据数值进行比较,0 == 0.0→true


字典Dictionary——dict = {}

tinydict = {'name': 'john', 'code':6734, 'dept': 'sales'}
print (dict['one'])
print (dict[2])
print (tinydict)
print (tinydict.keys())
print (tinydict.values())
输出:dict['one']
dict[2]
{'name': 'john', 'code': 6734, 'dept': 'sales'}
dict_keys(['name', 'code', 'dept'])
dict_values(['john', 6734, 'sales'])

字典 Dictionary Method & Description(参考gpt)

  1. dict.fromkeys()

    • 创建新字典,包含从序列 seq 中获取的键,值设置为 value
  2. dict.update(dict2)

    • dict2 键值对添加到 dict
    • dict 包含相同键→dict2 值会覆盖 dict
  3. dict.copy()

    • 返回dict 的浅拷贝(shallow copy)。
    • 浅拷贝→新字典和原字典的键值对相同,但如果值是可变对象(列表或字典),则它们会指向同一个对象。
  4. dict.setdefault(key, default=None)

    • 获取 key 对应值。如果 key 不在字典中,则将 key 添加到字典中,值设置为 default
  5. dict.has_key(key)
    Python 3 已移除。使用 key in dictkey not in dict 检查键是否存在
    这张名为 “image.png” 的图片提供了关于 Python 字典(dictionary)的一些常用方法及其简要描述。这些方法用于操作和获取字典中的信息。下面是每个方法的详细解释:

  6. dict.clear():清空字典

  7. del dict[key]:删除特定键及对应值

  8. dict.pop(key):删除特定键 key 并返回对应值。如果键不存在于字典中,可以提供一个默认值,否则抛出 KeyError

  9. dict.popitem():删除并返回包含最后一个键值对的元组。字典为空→抛出 KeyError

  10. dict.get(key, default=None)

  11. dict.items():返回包含字典键值对的视图对象,每个元素都是一个 (key, value) 元组

  12. dict.keys()

  13. dict.values()

del dict# delete entire dictionary

dict特点:

▪ 查找和插入的速度极快,不随key增加而变慢
▪ 占用大量的内存——空间换取时间

list特点:

▪ 查找和插入的时间随着元素的增加而增加
▪ 占用空间小


Python 集合Set——无序唯一元素的集合

"{}“定义集合。默认大括号用于字典,但使用”,"分隔元素列表则视为集合
set() 函数创建集合
没有索引位置, 不可变

  1. add():添加新元素

  2. clear():删除所有元素

  3. copy():浅拷贝

  4. difference():返回差集,即存在于第一个但不在第二个集合中的元素

  5. discard()
    移除元素,如果元素不存在于集合中,则不执行任何操作,也不抛出错误

  6. intersection():返回交集

  7. issubset():检查第一个集合是否是第二个集合的子集。

  8. issuperset():检查第一个集合是否是第二个集合的超集

  9. pop():随机移除并返回集合中的一个元素

  10. remove()
    移除特定元素,如果元素不存在于集合中,则抛出 KeyError

  11. union():返回并集

  12. update()
    将2个或多个集合的元素合并到第一个集合中,不创建新集合


Python bytes——Python 3.x 新增类型

▪ bytes以字节序列(二进制形式)存储数据。 字节串 → 字符编码方式(字符集) 字符串 字节串\xrightarrow{\text{字符编码方式(字符集)}}{字符串} 字节串字符编码方式(字符集) 字符串

#构造函数创建空bytes
b1 = bytes()
#空字符串创建空bytes
b2 = b''
#b前缀将字符串转换成bytes
b3 = b'http://c.biancheng.net/python/'
print("b3: ", b3)
print(b3[3])
print(b3[7:22])
#为bytes()方法指定字符集
b4=bytes('C语言中文网8岁了',encoding='UTF-8')
print("b4: ", b4)
#encode()方法将字符串转换成bytes
b5="C语言中文网8岁了".encode('UTF-8')
print("b5: ", b5)
输出:b3:  b'http://c.biancheng.net/python/'
112(p对应十进制是112)
b'c.biancheng.net'
b4:  b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x918\xe5\xb2\x81\xe4\xba\x86'
b5:  b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x918\xe5\xb2\x81\xe4\xba\x86'

变量赋值进阶

Interning in Python (Optimization)

1.None

2.Address of Integer Inside Range (-5 to 256)

3.Strings字符串采用驻留机制

• 字符串len为0或1
• 字符串len>1且只包含大小写字母、数字、下划线
• 字符串只在编译时进行驻留,而非运行时
Pyhton提供intern方法强制驻留

strl='sten'+'waves'# compile_time
print(strl is 'stenwaves')

str3='sten'
str4=str3+'waves'
print(str4 is 'stenwaves')#run_time
输出:True
False
>>> a="a*&&"
>>> b="a*&&"
>>> a is b
False
>>> import sys
>>> a=sys.intern(b)
>>> a is b
True

格式化输出 Formatted Output

1.Formatting with

  1. % Operator
print('The value of pi is: %5.4f' % 3.141592)
#5表示总宽度(包括小数点和小数点后的数字),整数部分的 3 会直接显示,而不会占用宽度。4表示小数点后保留4位数字,f 表示浮点数
print('Floating point numbers: %1.0f' % 13.144)
#由于总宽度不足以显示整数部分的 13,实际上会忽略宽度限制,整数部分会完全显示
输出:The value of pi is: 3.1416
Floating point numbers: 13
  1. format() string method
 'String here {} then also {}'.format('something1','something2')
Syntax: {[index]:[width][.precision][type]}
▪ d → integers
▪ f → floating-point numbers
▪ b → binary numbers
▪ o → octal numbers
▪ x → octal hexadecimal numbers
▪ s → string
▪ e → floating-point in an exponent format
  1. string literals, called f-strings
name="Ele"
print(f"My name is {name}.")
print(f"He said his age is {(lambda x: x * 2)(3)}")
匿名函数(lambda函数)的调用
# Float precision in the f-String method:
# Syntax: {value:{width}.{precision}}
num = 3.14159
#不要四舍五入→.5f或者%格式化输出
print(f"The value of pi is: {num:{1}.{5}}")
输出:My name is Ele.
He said his age is 6
The value of pi is: 3.1416
  1. String Template Class字符串模板类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值