码迷,mamicode.com
首页 > 编程语言 > 详细

Python 学习之路-基本的概念(三)

时间:2016-07-21 11:09:44      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:python   赋值   pyc   列表   操作   索引   

Python中一些经常用到的概念:

1、在Python中是没有常量的概念,换句话说在Python各种所有量都是可以更改的,规定将项定义为常量的量都定义为大写,eg:CONSTOF = "this is a const"。

2、在Python中我们导入一个三方库可以在dos下输入 >>\user\administrator\pip install 库名

3、几个常用的库的语句

import os
os.system("ipconfig")            # 在windows下查看ip地址
res = os.system("ipconfig")            # 返回程序的结果
res = os.open("ipconfig").read()            # 返回程序的执行的结果,可以print(res)打印出来
import sys
sys.path                 # 打印出环境变量的,通常我们会将需要按照的库放在site-packages或dist-packages下

4.pyc文件,就是我们在一个文件中导入另一个文件中编译出来的文件,供解释器使用,我的理解就是一个库文件在供别的文件时,为方便解释器调用生成的。Python3中放在一个缓存文件夹中。

5、在针对字符输出操作时,少使用“+”连字符,因为它会降低程序效率

6、字符类型的操作:

7、针对列表的操作:(列表其实就是我们常说的数组)

List = ["Beijing", "Shanghai", "Nanchang", "Wuhan", "Nanchang", "Changsha", "Shenzhen"]

List.insert(2, "6")                             # 将列表的第二个元素中变为6,每次只能插入一个字符
List.insert(5, "Tianjing")                  # 在列表的第5个元素变为Tianjing
List.append("Taiwan")                       # 在列表的末端加上taiwan元素
List.remove("Shanghai")                     # 在列表中移除一个元素,在python中还有del,对于各个都可以删除
List.index("Nanchang")                      # 返回列表中Nanchang所在的索引位置
# 对于删掉整个列表中指定的字符的程序可以这么写
cnt = List.count("Nanchang"))               # 返回在列表中有多少个“Nanchang”
List.count("Nanchang")                     # 表示在列表中有多个Nanchang字符
List1 =["Hangzhou", "234", "23", "新疆"]          # 在List列表后再加上一个一个新的列表List1
List.extend(List1)
List.reverse()                                      # 将原来的列表反转
List.pop(2)                                         # 指定下标进行列表的删除,删除第三个元素
for i in range(cnt):
    List[List.index("Nanchang")] = "Wuhan"

List.clear()                         # 删除掉整个列表

在每句的后面加上一句print就可以看出列表在整个过程的变化,其结果如下

[‘Beijing‘, ‘Shanghai‘, ‘6‘, ‘Nanchang‘, ‘Wuhan‘, ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘]
[‘Beijing‘, ‘Shanghai‘, ‘6‘, ‘Nanchang‘, ‘Wuhan‘, ‘Tianjing‘, ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘]
[‘Beijing‘, ‘Shanghai‘, ‘6‘, ‘Nanchang‘, ‘Wuhan‘, ‘Tianjing‘, ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘, ‘Taiwan‘]
[‘Beijing‘, ‘6‘, ‘Nanchang‘, ‘Wuhan‘, ‘Tianjing‘, ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘, ‘Taiwan‘]
[‘Beijing‘, ‘6‘, ‘Nanchang‘, ‘Wuhan‘, ‘Tianjing‘, ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘, ‘Taiwan‘]
2
[‘Beijing‘, ‘6‘, ‘Nanchang‘, ‘Wuhan‘, ‘Tianjing‘, ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘, ‘Taiwan‘, ‘Hangzhou‘, ‘234‘, ‘23‘, ‘新疆‘]
[‘新疆‘, ‘23‘, ‘234‘, ‘Hangzhou‘, ‘Taiwan‘, ‘Shenzhen‘, ‘Changsha‘, ‘Nanchang‘, ‘Tianjing‘, ‘Wuhan‘, ‘Nanchang‘, ‘6‘, ‘Beijing‘]
[‘新疆‘, ‘23‘, ‘Hangzhou‘, ‘Taiwan‘, ‘Shenzhen‘, ‘Changsha‘, ‘Nanchang‘, ‘Tianjing‘, ‘Wuhan‘, ‘Nanchang‘, ‘6‘, ‘Beijing‘]
[‘新疆‘, ‘23‘, ‘Hangzhou‘, ‘Taiwan‘, ‘Shenzhen‘, ‘Changsha‘, ‘Wuhan‘, ‘Tianjing‘, ‘Wuhan‘, ‘Wuhan‘, ‘6‘, ‘Beijing‘]
# -----------------------我是分割线-------------------
""" 还有一些其他的操作,如List.copy(),但是值得注意的是List中可以嵌套多级列表,但是调用List2 = List.copy(),只会复制List中第一曾的列表,深入的层数列表之后只会copy地址。如果想完全的复制一份,需要导入官方库import copy,并且调用copy.deepcopy,其中的代码如下"""

import copy
List = ["Beijing", "Shanghai", [1, 2, 3, 4, 5], "Nanchang", "Changsha", "Shenzhen"]
List1 = List.copy()                     # 利用列表的copy函数来赋值,只完全的复制了第一层,对于第二层及以上(以上的没验证)的只是复制了软链接(地址)
List2 = List                            # 第一层是软链接,第二层及以上也还是软链接(地址)
List3 = copy.deepcopy(List)             # 完完全全的拷贝了一份List,跟之前的脱离了关系
print(id(List),id(List1),id(List2),id(List3))    # 打印出三种方式的变量地址
print("--------------------我是分割线--------------------------")
List[0] = "Nanchang"
print(List)
print(List1)
print(List2)
print(List3)
print(id(List),id(List1),id(List2),id(List3))
print("--------------------我是分割线--------------------------")
List[2][0:2] = [7, 8]
print(List)
print(List1)
print(List2)
print(List3)
print(id(List),id(List1),id(List2),id(List3))

上面的运行的结果如下所示,我们从中可以看出,在Python3中的三种不同的幅值方式,当我们在改变原始列表List中的元素时,其后List1,List2,List3的变化。其中List.copy()只是完全的复制了第一层的列表,对其深层的列表没有复制(只是赋值了地址),这样的好处就是可以大大减少深层的列表在存在大量数据的时候,赋值是的复杂性。而对于直接使用操作符“=”的赋值情况就是完全的复制了原始列表的地址,类似于C++里面的别名(引用),从变量的地址也可以看出,和之前的地址都是完全一样的。copy.deepcopy()就是完全的复制出了一份新的数据。不过我觉得这里命名的deepcopy(深拷贝)和C++里面的概念相反,(C++里对这种只是赋值值的认为是浅拷贝)。

14456264 14456776 14456264 14457928
--------------------我是分割线--------------------------
[‘Nanchang‘, ‘Shanghai‘, [1, 2, 3, 4, 5], ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘]
[‘Beijing‘, ‘Shanghai‘, [1, 2, 3, 4, 5], ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘]
[‘Nanchang‘, ‘Shanghai‘, [1, 2, 3, 4, 5], ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘]
[‘Beijing‘, ‘Shanghai‘, [1, 2, 3, 4, 5], ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘]
14456264 14456776 14456264 14457928
--------------------我是分割线--------------------------
[‘Nanchang‘, ‘Shanghai‘, [7, 8, 3, 4, 5], ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘]
[‘Beijing‘, ‘Shanghai‘, [7, 8, 3, 4, 5], ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘]
[‘Nanchang‘, ‘Shanghai‘, [7, 8, 3, 4, 5], ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘]
[‘Beijing‘, ‘Shanghai‘, [1, 2, 3, 4, 5], ‘Nanchang‘, ‘Changsha‘, ‘Shenzhen‘]
14456264 14456776 14456264 14457928

8、索引的介绍

在Python中的索引和MATLAB这种解释性语言差不多,看列子。就拿上面的Lis列表来说,其内容如下

List = ["Beijing", "Shanghai", "Nanchang", "Wuhan", "Nanchang", "Changsha", "Shenzhen"]
List[0:2]            # 取List的前面两个元素,从左往右取头不取尾,在MATLAB中会是得到三个数,结果是[‘Beijing‘, ‘Shanghai‘]
List[-3:-1]                      # 取List的最后两个元素,答案是[‘Nanchang‘, ‘Changsha‘]
List[-3:]                        # 取List的最后三个元素,答案是["Nanchang", "Changsha", "Shenzhen"]
List[::2]                        # 对整个List列表中,隔一个取一个元素,MATLAB语言中是最后元素表示步长,这里是最后一个元素表示步长,不写默认步长为1
List[1:5][3][4]                # Python中可以一直的对列表进行切分,这表示先将List中的第2个元素到第6个元素之前的部分切分出来,然后再将其中的4(List[1]、List[2]、List[3]、List[4],可以理解为组成了新的临时列表)个元素中的第4个元素(也就是原来的List[4])提取出来,最后再对这个元素(字符串"Nanchang")的第5个字符,所以的出来的答案也就是‘h‘。



本文出自 “独家雨天” 博客,请务必保留此出处http://520sky.blog.51cto.com/9188727/1828229

Python 学习之路-基本的概念(三)

标签:python   赋值   pyc   列表   操作   索引   

原文地址:http://520sky.blog.51cto.com/9188727/1828229

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!