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

python基础2

时间:2016-09-02 23:14:35      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:

本节内容

  1. 列表、元组操作
  2. 字符串操作
  3. 字典操作
  4. 集合操作
  5. 文件操作
  6. 字符编码与转码 

一、列表、元组操作

列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

定义列表

>>> name = [‘hongpeng‘,21,‘ops‘]

通过下标访问列表中的元素,下标从0开始计数

>>> name[0]
‘hongpeng‘

>>> name[-1]#可以倒着取
‘ops‘

列表操作

(1)切片:取多个元素

技术分享
>>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
>>> names[1:4]  #取下标1至下标4之间的数字,包括1,不包括4
[Tenglan, Eric, Rain]
>>> names[1:-1] #取下标1至-1的值,不包括-1
[Tenglan, Eric, Rain, Tom]
>>> names[0:3] 
[Alex, Tenglan, Eric]
>>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
[Alex, Tenglan, Eric]
>>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
[Rain, Tom, Amy] 
>>> names[3:-1] #这样-1就不会被包含了
[Rain, Tom]
>>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
[Alex, Eric, Tom] 
>>> names[::2] #和上句效果一样
[Alex, Eric, Tom]
View Code

 

(2)追加

技术分享
>>> names
[Alex, Tenglan, Eric, Rain, Tom, Amy]
>>> names.append("我是新来的")
>>> names
[Alex, Tenglan, Eric, Rain, Tom, Amy, 我是新来的]
View Code

 

(3)插入

技术分享
>>> names
[Alex, Tenglan, Eric, Rain, Tom, Amy, 我是新来的]
>>> names.insert(2,"强行从Eric前面插入")
>>> names
[Alex, Tenglan, 强行从Eric前面插入, Eric, Rain, Tom, Amy, 我是新来的]

>>> names.insert(5,"从eric后面插入试试新姿势")
>>> names
[Alex, Tenglan, 强行从Eric前面插入, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]
View Code

 

(4)修改

技术分享
>>> names
[Alex, Tenglan, 强行从Eric前面插入, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]
>>> names[2] = "该换人了"
>>> names
[Alex, Tenglan, 该换人了, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]
View Code

 

(5)删除

技术分享
>>> del names[2] 
>>> names
[Alex, Tenglan, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]
>>> del names[4]
>>> names
[Alex, Tenglan, Eric, Rain, Tom, Amy, 我是新来的]
>>> 
>>> names.remove("Eric") #删除指定元素
>>> names
[Alex, Tenglan, Rain, Tom, Amy, 我是新来的]
>>> names.pop() #删除列表最后一个值 
我是新来的
>>> names
[Alex, Tenglan, Rain, Tom, Amy]
View Code

 

(6)扩展

技术分享
>>> names
[Alex, Tenglan, Rain, Tom, Amy]
>>> b = [1,2,3]
>>> names.extend(b)
>>> names
[Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]
View Code

 

(7)copy

技术分享
>>> names
[Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]

>>> name_copy = names.copy()
>>> name_copy
[Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]
View Code

 


技术分享
name1 = [1,hongpeng,[hello,world,8]]#列表中可以嵌套列表
name2 = name1.copy()
print(name2)
输出[1, hongpeng, [hello, world, 8]]

name1 = [1,hongpeng,[hello,world,8]]
name2 = name1.copy()
name2[2][2] = 88
print (name1)
输出[1, hongpeng, [hello, world, 88]]
View Code

what the fuck!我明明把name2中的8替换为88,为什么name1中的8也变了????name1的值和name2的值有毛的关系啊??
原因是因为列表中如果还嵌套列表,那么copy只能copy第一层,第二层name1和name2都是共享一份数据,在内存中存在同一个地方。
想要copy之后改变name2二级列表里的值却不影响name1改怎么办呢?

只能用导入copy模块。
技术分享
import copy
name1 = [1,hongpeng,[hello,world,8]]
name2 = copy.deepcopy(name1)
name2[2][2] = 88
print(name1)
print(name2)

输出
[1, hongpeng, [hello, world, 8]]
[1, hongpeng, [hello, world, 88]]
View Code
哦也!!!
 

(8)统计

技术分享
>>> names
[Alex, Tenglan, Amy, Tom, Amy, 1, 2, 3]
>>> names.count("Amy")
2
View Code

 

(9)获取下标

技术分享
>>> names
[Tom, Tenglan, Amy, Amy, Alex, 3, 2, 1]
>>> names.index("Amy")
2 #只返回找到的第一个下标
View Code

 

练习:

(1)

写一个列表,列表中包含本组成员 name = [‘hong‘,‘peng‘,‘alex‘,‘tom‘,‘jack‘,‘dog‘,‘cat‘,‘tiger‘]

往中间插入两个其他组成员名字 name.insert(-2,‘hello‘) name.insert(-2,‘world‘)

取出第3-6的列表  name[2:7]

删除第7个人  name.remove(‘xx‘)

把刚才加入的其他组的人一次性删除  del name[4:6]

把组长名字加上备注  name[4] = "xxxxx" 

要求每隔一个取一个   print(name[0::2])[x:x:x]步长

 

(2)name = [0,1,2,3,3,9,9,9],把列表中的9全部替换为999

技术分享
name = [0,1,2,3,3,9,9,9]
if 9 in name:
    num_of_ele = name.count(9)#统计9的个数
    for i in range(num_of_ele):
        position_of_ele = name.index(9)#循环得到含有9的索引
        name[position_of_ele] = 999#替换9为999
        print("[%s] 9 is/are in name,position:[%s]"%(num_of_ele,position_of_ele))
View Code

 

 

python基础2

标签:

原文地址:http://www.cnblogs.com/hongpeng/p/5835827.html

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