目录

一、变量

1.概述

Variables are used to store information to be referenced(引用)and manipulated(操作) in a computer program.

2.声明

(1)命名规则

  • 变量名只能是字母、数字或下划线的任意组合;
  • 第一个不能是数字
  • 关键字不能作为变量名

(2)定义

name1 = 'Lu'
name2 = name1
name1 = 'MJJ'
print(name1, name2) -->:
MJJ Lu

(3)删除

name1 = 'Lu'
del name1
print(name1) -->:
NameError: name 'name1' is not defined

 变量的生命周期:无指向时,才会在内存中被回收。

二、数据类型

1.数字

(1)分类

Python 支持三种不同的数值类型:

  • 整型(Int) : 不带小数点。Python3 整型是没有限制大小的,可以当作   Long 类型使用,Python3 没有 Python2 的 Long 类型;
  • 浮点型(float):浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250);
  • 复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

(2)类型转换

  • int(x) 将x转换为一个整数。
  • float(x) 将x转换到一个浮点数。
  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。Python中复数不支持强转,但可以通过real和image方法获取到实部和虚部的值。

(3)运算

不同类型的数混合运算时会将整数转换为浮点数。

  • /:总是返回一个浮点数。
  • //:得到的并不一定是整数类型的数,它与分母分子的数据类型有关系。

          7 // 2=3, 7.0 // 2=3.0,7 // 2.0=3.0

  • **:幂运算。
  • %:取余。

在交互模式中,最后被输出的表达式结果被赋值给变量 "_"。“_”应该为只读变量。

(4)数学函数

  • abs(x):返回数字的绝对值,如abs(-10) 返回 10。
  • max(x1, x2,...) :返回给定参数的最大值,参数可以为序列。
  • min(x1, x2,...) :返回给定参数的最小值,参数可以为序列。
  • pow(x, y):x**y 运算后的值。
  • sqrt(x) :返回数字x的平方根。

(5)随机数函数

2.字符串

(1)切片,索引,拼接

str[a:b],str[a:b:c]

  • a,b为参数。从字符串指针为a的地方开始截取字符,到b的前一个位置(因为不包含b);
  • 如果a,b均不填写,默认取全部字符;
  • 如果a填写,b不填写(或填写的值大于指针下标),默认从a开始截取,至字符串最后一个位置;
  • 如果a不填写, b填写,默认从0位置开始截取,至b的前一个位置;
  • 如果a为负数,默认从尾部某一位置,开始向后截取,最后一个位置为-1
  • 如果a>=b, 默认输出为空。
  • [a:b:c] 表示的是从头到尾,步长为c。第一个冒号两侧的数字是指截取字符串的范围,第二个冒号后面是指截取的步长。
  • [::-1]:字符串倒序

万恶的字符串拼接:

  python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。

字符串是一种不可变数据类型,不可以改变。可以用截取的方式,拼接的方式重新组合成新的字符串。

           str1[0] = "H"

           TypeError: 'str' object does not support item assignment.

(2)转义

  • \(在行尾时):续行符。代码过长时,可以用续航符进行换行编写,且续行符之后,续行符后面什么都不能 出现(包括空格),必须换行(必须换行写内容)

        a = "ajkfhajkfhkjahfkahfkhakfhkdafafafaddafafdafafadfafafafafafadefgg" \

          "hfakjfhkah"

  • \\ 反斜杠符号,\' 单引号,\" 双引号:

        print(str1 + "\\")print("\'" + str1 + "\'")

  • \a 响铃,命令行交互模式中可以实现。
  • \b 退格(Backspace),\000 空,\n 换行,等

(3)运算

  • “+”:拼接
  • “str*number”:重复输出number次str
  • []:获取索引
  • [:]:截取,切片,左闭右开
  • in,not in :成员逻辑运算符
  • R/r:原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符,引入文件路径时常用。

        print(r"hello \' word!")

        print("hello \' word!")

(4)格式化输出

  %和format()函数使用、f-string字面量格式化字符串,是新的格式化字符串的语法。

(5)字符串操作

  • str.capitalize(),无参数,将字符串的第一个字符转换为大写,其余转换成小写。首字符为非字母,则不转换,其余转为小写。
  • str.center(width[, fillchar]),返回一个指定宽度且原str居中的新字符串,fillchar 为填充的单个字符,默认为空格。

    参数:width,宽度;fillchar,能且只能为一个字符。

    注意:

      a、如果 width 小于字符串宽度直接返回字符串,不会截断;

      b、fillchar 只能是单个字符。

  • str.count(sub[, start= 0][,end=len(string)]),统计子字符串sub里某个字符串出现的次数。可选参数为在字符串搜索的开始(默认为0)与结束位置(默认为len(string))。
str1 ='python' * 3
print(str1.count('p'))
print(str1.count('p', 1)) # 包含起始位置
print(str1.count('p', 1, -6)) # 不包含结束位置 -->:
3
2
1

  

  • str.join(sequence),将序列seq中的元素以指定的字符串str连接返回一个新的字符串。

    参数:seq,元组、列表、字典、字符串。字典只能连接键值key。

str1 = '\t'
str2 = 'python'
list1 = [i*2 for i in str2]
print(str1.join(str2))
print(str1.join(list1)) -->:
p y t h o n
pp yy tt hh oo nn

  

  • str.split(str="", num=string.count(str)),指定分隔符对字符串进行切片。常用作数据的分析提取。

    参数:str,分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等;num,分割次数。默认为 -1, 即分隔所有,分割为 num+1 个子字符串。

    返回值:元素为字符串的列表。

      爬虫时,图片名获取:

url_str = "http://www.baidu.com/python/image/123456.jpg"
print(url_str.split('/')[-1]) -->:
123456.jpg

  

  • str.strip([chars]),移除字符串头尾指定的字符(默认为空格)或字符序列chars,返回新字符串。

    注意:

      a、该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

      b、如果不带参数,默认是清除两边的空白符,例如:/n, /r, /t, ' '等

str1 = '\tpython\t' * 3
print(str1.strip()) -->:
python python python

  

      c、带有参数的时候,这个参数可以理解一个要删除的字符的列表,删除多个字符时,只要头尾有对应其中的某个字符即 删除,不考虑顺序,直到遇到第一个不包含在其中的字符为止。

str1 = 'a111123\t132231b213321312==3213122132*31123132'
print(str1.strip('123ab\t'))
# 等价于
for i in str1:
if i in '123ab\t':
str1 = str1.strip(i) -->:
==3213122132*

  

  • (待补充)

3.列表

(1)基况

  列表元素类型可以不一致,和C数组不一样(类似ndarray)。列表元素可以修改,所以做列表有关操作时,要注意原列表的元素是否被更改了(深浅拷贝!!!)。

list1 = [i for i in range(10)]
list2 = list1 # list2 = list1.copy()
print(list1, list2)
list2[0] = 100
print(list1, list2) -->:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[100, 1, 2, 3, 4, 5, 6, 7, 8, 9] [100, 1, 2, 3, 4, 5, 6, 7, 8, 9]

(2)基操

  • 下标索引查找或者更改(列表可变)
  • 截取、切片:[:];间隔截取:[:::]
  • 拼接组合:“+”;重复:“*”
  • 成员逻辑判断:in;not in

(3)列表嵌套

不支持花切,只能分层操作。

list1 = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(list1[1:][:])
print(list1[[0], [0]]) -->:
TypeError: list indices must be integers or slices, not tuple
[[4, 5, 6], [7, 8, 9]]

(4)常见内建函数和列表方法

内建函数:

  • len(list),返回列表元素个数
  • min/max(list),返回列表最小值/最大值

    元素全部为数字类型时,直接根据值的大小比较。当其中的元素全部为字符串类型(string)时,则比较的是每个字符串元素的第一个字符的 ASCII 的大小。

  • list(seq),将元组或字符串转换成列表。
str1 = "python"
tup1 = ('1', '2', '3')
dict1 = {'a': 1, 'b': 2, 'c': 3}
print(list(str1)) # 每个字符循环一遍,类似列表生成式
print(list(tup1))
print(list(dict1)) # 默认为KEY
print(list(dict1.values())) -->:
['p', 'y', 't', 'h', 'o', 'n']
['1', '2', '3']
['a', 'b', 'c']
[1, 2, 3]
  • enumerate(list),以(index, value)小元组形式返回列表的下标和下标对应的值。
list1 = [i for i in range(10)]
for index, value in enumerate(list1):
print(index, value) -->:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
  • 待补充

list对象的方法:

  • list.append(obj),在列表末尾添加新的对象,返回值为None,修改原列表。假若不希望原列表被改,记得先copy()。
list1 = [i for i in range(10)]
list2 = list1.append(10)
print(list2, type(list2), list1) -->:
None <class 'NoneType'> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  • list.count(obj),返回某个元素在列表中出现的次数。不可以像str.count()指定搜索区间,搜索整个列表。
  • list.extend(seq),在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表),无返回值。list.append()的循环加强版。

   参数:
    seq-- 可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾。

  • list.index(x[, start[, end]]),返回X在列表中第一次匹配到的索引。如果没找到,则抛出异常!

    参数:
    x-- 查找的对象。
    start-- 可选,查找的起始位置。
    end-- 可选,查找的结束位置。

  • list.insert(index, obj),将指定对象插入列表的指定位置,无返回值,在原列表操作修改。
  • list.pop([index=-1]),移除列表中的一个元素(默认最后一个元素,不能超过len(list),否则抛异常!),并且返回该元素的值。在原列表操作删除。
  • list.remove(obj),移除列表中某个值的第一个匹配项,无返回值。在原列表操作删除。无法指定匹配区间。

    删除重复元素,不要用由前到后for循环。因为删除一个后,后面的元素回向前补齐,而循环下标还是会正常加1,会导致后面的循环下标与元素不对应。
      方法一:从后往前[::-1]循环开始删除。

      方法二:用Python原生态方法,现用set()列表变成集合(集合唯一性),再用list()将集合变成列表。

list1 = [1, 2, 'a', 'l', 'a', 1, 1, 2, 3]
set1 = set(list1)
list1 = list(set1)
print(list1) -->:
[1, 2, 3, 'l', 'a']

  

  • ist.reverse(),翻转180°,无返回值。
  • list.sort( key=None, reverse=False),排序。无返回值,原列表操作。默认reverse=False升序。
  • 待补充

4.元组

(1)基况

  与列表类似,但元素不能修改,又叫只读列表。和str一样,操作都会生成新的元组。

(2)基操

  • 下标索引访问查找
  • 截取、切片、间隔截取[:::]访问
  • 拼接组合:“+”;重复:“*”
  • 成员逻辑判断:in;not in

(3)常见内建函数及方法

函数:

  • len()、max()、min()
  • tuple(iterable):将可迭代系列转换为元组。

方法:(只有两个,因为元组不可变)

  • count()
  • index()

(4)元组注意事项

  a、元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:

Tuple1 =(3)--》<class 'int'>Tuple = (3,)--》<class 'tuple'>

  b、tuple的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。

  c、tuple中的“不变”,指的是“指向不变”,但是指向里面的内容是可以变的。

tuple1 = ([1, 2, 3, 9, 5], [1, 1, 2, 3], 100)
tuple1[0][0] = 100
print(tuple1) -->:
([100, 2, 3, 9, 5], [1, 1, 2, 3], 100)

5.字典

(1)基况

  字典是另一种可变容器模型,且可存储任意类型对象。key-value键值对形式。

(2)键和值

  • 键值必须唯一,值不必,但同一个键值被赋值两次,后一次赋值会被记住;
  • 值可以是任何数据类型(标准的、用户自定义的),但键值必须是不可变的数据类型:字符串、元组、数字;
  • 对字典操作,一般通过键值(特殊的索引)进行操作:读取、修改、新增、删除等
  • 通过键值对字典进行逻辑操作:key in/not in dict

(3)常见内建函数和方法

函数:

  • len(dict),计算字典元素个数,即键的总数。

方法:

  • dict.clear(),清空字典内所有元素,字典不会被删除,无返回值无参数。
  • dict.copy(),返回一个字典的浅拷贝。
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}
dict2 = dict1.copy() # 深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
dict2['name'][0] = 'LU__' # 子对象为引用
dict2['age'] = [100, 16] # 父对象为拷贝
print(dict2)
print(dict1) -->:
{'name': ['LU__', 'mjj'], 'age': [100, 16], 'sex': ['man', 'wom']}
{'name': ['LU__', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}

  深拷贝需要用到copy模块的deepcopy()函数,copy.deepcopy(dict)

  • dict.fromkeys(seq[, value]),创建一个值全一样的字典。不同的key对应一样的value。

    参数:

      seq,序列中的元素为字典的键值

      value,默认为None。

dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}
dict2 = dict1.fromkeys('NAME')
dict3 = dict.fromkeys([1, 2, 3], [10, 10])
print(dict2)
print(dict3)
print(dict1) -->:
{'N': None, 'A': None, 'M': None, 'E': None}
{1: [10, 10], 2: [10, 10], 3: [10, 10]}
{'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}
  • dict.get(key, default=None),返回指定键值对应的值,如果键值不在字典中返回默认值None。
  • dict.items(),以列表形式(并非直接的列表(dict_items迭代对象),若要返回列表值还需调用list函数)返回可遍历的(键, 值) 元组数组,参数无。
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}
dict1_item = dict1.items()
print(dict1_item)
print(type(dict1_item))
print(list(dict1_item))
print(list(dict1)) # 只得到键值列表
for i, j in dict1_item:
print(i, j) -->:
dict_items([('name', ['lu', 'mjj']), ('age', [18, 16]), ('sex', ['man', 'wom'])])
<class 'dict_items'>
[('name', ['lu', 'mjj']), ('age', [18, 16]), ('sex', ['man', 'wom'])]
['name', 'age', 'sex']
name ['lu', 'mjj']
age [18, 16]
sex ['man', 'wom']
  • dict.keys(),返回一个可遍历可迭代对象dict_kys,可以使用 list() 来转换为列表。参数无,返回一个迭代器。pthon2.x直接返回一个列表。
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}
for i in dict1.keys():
print(i)
  • dict.setdefault(key, default=None),和 get()方法 类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}
print(dict1.setdefault('name'))
print(dict1.setdefault('birthday', ['1995-8-6', '1995-3-9']))
print(dict1) -->:
['lu', 'mjj']
['1995-8-6', '1995-3-9']
{'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom'], 'birthday': ['1995-8-6', '1995-3-9']}
  • dict.update(dict2),把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里,无返回值。
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}
dict2 = {'birthday': ['1995-8-6', '1995-3-9']}
print(dict1.update(dict2))
print(dict1) -->:
None
{'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom'], 'birthday': ['1995-8-6', '1995-3-9']}
  • dict.values(),返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有值。
  • pop(key[,default]),删除字典给定键 key 所对应的值,返回值为被删除的值,并修改原字典。key值必须给出。 否则,返回default值。
  • popitem(),返回并删除字典中的最后一对键和值。返回一个键值对(key,value)形式,无参数。

6.集合

集合(set)是一个无序的不重复元素序列。两个重要作用:
  去重:把列表变成集合即可
  关系测试:测试两组数据之前的交集、差集、并集等

8.byte

字节流。有些时候(网络通信)参数传递必须以字节流形式传参。

  • str.encode(),编码,str to byte。
  • b.decode(),解码,byte to str。

9.json

Python基础(1)——变量和数据类型[xiaoshun]的更多相关文章

  1. python基础之变量与数据类型

    变量在python中变量可以理解为在计算机内存中命名的一个存储空间,可以存储任意类型的数据.变量命名变量名可以使用英文.数字和_命名,且不能用数字开头使用赋值运算符等号“=”用来给变量赋值.变量赋值等 ...

  2. Java编程基础——常量变量和数据类型

    Java编程基础——常量变量和数据类型 摘要:本文介绍了Java编程语言的常量变量和数据类型. 常量变量 常量的定义 一块内存中的数据存储空间,里面的数据不可以更改. 变量的定义 一块内存中的数据存储 ...

  3. python基础之五大标准数据类型

    学习一门语言,往往都是从Hello World开始. 但是笔者认为,在一个黑框框中输出一个"你好,世界"并没有什么了不起,要看透事物的本质,熟悉一门语言,就要了解其底层,就是我们常 ...

  4. Python 基础之一变量和赋值

    变量:程序在运行的时候会用到很多临时存储数据,这个时候就用到了变量,临时数据的名字. Python中变量不需要声明,直接可以使用,变量的数据类型由赋值确定. >>> name=&qu ...

  5. Python基础语法,基本数据类型及相关操作

    ---恢复内容开始--- python文件 文件开头要有  #!/usr/bin/ python        --在linux中是告诉系统phthon的路径是在/usr/bin/ python目录下 ...

  6. python中的变量和数据类型

    一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可 ...

  7. Python自动化开发-变量、数据类型和运算

    一.变量 变量定义:Variables are used to store infomation to referrenced and manipulated in a computer progra ...

  8. python基础(2)---数据类型

    1.python版本间的差异: 2.x与3.x版本对比 version 2.x 3.x print print " "或者print()打印都可以正常输出 只能print()这种形 ...

  9. python基础3 - 变量的基本使用和命名

    4.变量的基本使用 4.1 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建 等号(=)用来给变量赋值 = 左边是变量名 = 右边是存储在变量中的值 变 ...

  10. day03-执行python方式、变量及数据类型简介

    目录 执行Python程序的两种方式 1. 第一种:交互式 2. 第二种:命令式 3. Python执行程序的三个阶段 变量 变量 什么是变量 Python中的变量 变量名的命名规范 内存管理 定义变 ...

随机推荐

  1. 【原创】kubernetes之CNI理解

    一.什么是CNI? CNI-容器网络接口,CNI(容器网络接口)是Cloud Native Computing Foundation项目,由一个规范和库(用于编写用于在Linux容器中配置网络接口的插 ...

  2. kubernetes实战-配置中心(四)分环境使用apollo配置中心

    要进行分环境,需要将现有实验环境进行拆分 portal服务,可以各个环境共用,但是apollo-adminservice和apollo-configservice必须要分开. 1.zk环境拆分为tes ...

  3. spring再学习之基本概念

    二.spring之IOC与DI 注入的方式: set方法注入: 构造方法注入: 字段注入: 注入类型: 值类型注入:8中基本类型 引用类型注入: BeanFaactory是原始接口:功能比较单一. A ...

  4. 牛客网多校第4场 J Hash Function 【思维+并查集建边】

    题目链接:戳这里 学习博客:戳这里 题意: 有n个空位,给一个数x,如果x%n位数空的,就把x放上去,如果不是空的,就看(x+1)%n是不是空的. 现在给一个已经放过数的状态,求放数字的顺序.(要求字 ...

  5. l2-002 链表去重 (未解决)

    L2-002. 链表去重 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个带整数键值的单链表L,本题要求你编写程序,删除 ...

  6. C# LINQ (2)

    Limiting Data -- Take() and Skip() 前面讲了 筛选 和 排序,现在讲 选取皇帝选妃,层层选拔,最后留几个,让他过目,他选一个或者几个作为妃子,大概是这么个意思Take ...

  7. JavaScript 注释规范

    JavaScript 注释规范 总原则 As short as possible(如无必要,勿增注释).尽量提高代码本身的清晰性.可读性. As long as necessary(如有必要,尽量详尽 ...

  8. useful life skills website

    useful life skills website 绳子打结技巧 https://www.animatedknots.com/complete-knot-list tools https://tab ...

  9. how to write an ebook that can support published by format PDF, Epub, Mobi and so on

    how to write an ebook that can support published by format PDF, Epub, Mobi and so on 如何写一本自己的电子书,支持各 ...

  10. HTMLMediaElement.srcObject & URL.createObjectURL & HTMLMediaElement.src

    HTMLMediaElement.srcObject & URL.createObjectURL & HTMLMediaElement.src Uncaught TypeError: ...