python常见变量的定义,引用,修改

来源:互联网 发布:淘宝网店客服中心 编辑:程序博客网 时间:2024/05/23 19:36

概要:针对常见的几种数据类型,本文主要通过图表,举例,和比较的方式来介绍变量的定义,引用,修改。

一,总览

这里写图片描述

二,知识点详解

(一).不可变数据类型与可变数据类型的比较:

1.不可变数据类型:

●例子:即基本的数据类型,包括整型,浮点型,字符串和元组。

●特点:对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创建的对象(如果没有其他变量引用原有对象的话(即引用计数为0),原有对象就会被回收)。

2.可变数据类型:

●例子:列表,字典。

●特点:对于可变数据类型,可以在原地址修改变量的值。具体要看下面的应用例子。

3.numpy中的array类型:

●介绍:科学计算库numpy中的基本数据类型array。

●特点:与C语言的数组,和matlab中的矩阵都有类似的地方。

(二).变量的定义,应用及修改

1. 整型,浮点型

>>> test_int = -10               #定义>>> print(id(test_int))          #查ID49271088>>> test_int = test_int + 10     #修改>>> print(id(test_int))          #查ID1562817568>>> test_int = 20                #再次定义>>> print(id(test_int))          #查ID1562818208>>> temp_int = test_int          #引用>>> temp_int = 3000>>> print(test_int)20>>> print(temp_int)3000

2.字符串

>>> test_string = 'antintheway'    #定义>>> test_string[0] = 'b'           #修改,出错TypeError: 'str' object does not support item assignment>>> test_string.replace( 'ant', 'Hamburger' )  #用replace方法修改'Hamburgerintheway'>>> print(test_string)antintheway

●总结与比较:字符串与元组都可以通过索引值来查询变量值,但不能通过索引来修改值,如果要修改值可以选择通过相应的方法。

3.列表

>>> test_list = [1,2,3,4,5,6]        #定义>>> test_list[0] = 100               #修改>>> print(test_list)         [100, 2, 3, 4, 5, 6]>>> temp_list = test_list            #引用 地址>>> temp_list[0] = 10>>> print(temp_list)                 #都改变[10, 2, 3, 4, 5, 6]                  >>> print(test_list)[10, 2, 3, 4, 5, 6]>>> new_list = test_list[:]          #引用 值>>> new_list[0] = 200>>> print(new_list)                  #并不同时改变[200, 2, 3, 4, 5, 6]>>> print(test_list)[10, 2, 3, 4, 5, 6]

●总结与比较:列表可以修改,但是不同的复制方式将会产生不同的结果。如果只复制地址,那么只要变量一改变,指向相同地址的变量都会改变,如果复制值,那么相当于再创建一个新的对象。复制后的变量与原变量不会相互影响。
●字典的特点与列表类似。
●元组的运算速度高于列表。

4.numpy库的基本变量array

>>> from numpy import *              #导入库>>> test_array = array([1,2,3,4,5,6,7,8])  #定义>>> test_array[0] = 20                     #修改>>> print(test_array)                      [20  2  3  4  5  6  7  8]>>> temp_array = test_array                #引用1>>> temp_array[1] = 30>>> print(test_array)[20 30  3  4  5  6  7  8]>>> print(temp_array)[20 30  3  4  5  6  7  8]>>> new_array = test_array[:]              #引用2 与列表比较>>> new_array[2] = 40>>> print(new_array)[20 30 40  4  5  6  7  8]>>> print(test_array)[20 30 40  4  5  6  7  8]>>> cut_array = test_array[0:2]        #切片引用修改与索引修改不同>>> cut_array[0] = 60>>> print(test_array)[60 30 40  4  5  6  7  8]>>> copy_array = test_array.copy()     #复制整个数组>>> copy_array[0] = 70>>> print(copy_array)[70 30 40  4  5  6  7  8]>>> print(test_array)[60 30 40  4  5  6  7  8]

●总结与比较:数组有切片引用,与列表中复制数据的方法形似,但却不同,需要区分开来。如果想要复制整个数组,可以采用.copy()的方式。

原创粉丝点击