Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104446
  • 博文数量: 67
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 577
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-16 09:51
个人简介

啄木鸟专吃虫,故名啄木鸟。

分类: Python/Ruby

2014-08-30 16:52:40

list中,由于list是可变的,所以是可以原地删除或者修改其中某个元素的
1.remove 仅仅 删除一个值的首次出现。 在这里, 'ab 在 list 中出现了两次, 但 li.remove("ab") 只删除了 'ab' 的首次出现。例如:
>>> l = ['ab','c','nihap','ab','few','s',4]
>>> l.remove('ab')
>>> l
['c', 'nihap', 'ab', 'few', 's', 4]
如果在 list 中没有找到值, Python 会引发一个异常来响应 index 方法。
>>> l.remove('abc')
Traceback (most recent call last):
  File "", line 1, in
    l.remove('abc')
ValueError: list.remove(x): x not in list

2.del  用于删除制定位置的列表元素,或者删除这个列表,例如:
>>> l
['c', 'nihap', 'ab', 'few', 's', 4]
>>> del l[1]
>>> l
['c', 'ab', 'few', 's', 4]
>>> del l[2:4]
>>> l
['c', 'ab', 4]
>>> del l
>>> l
Traceback (most recent call last):
  File "", line 1, in
NameError: name 'l' is not defined

3.pop 默认参数时会做两件事: 删除 list 的最后一个元素, 然后返回删除元素的值。例如:
>>> l = ['ab','c','nihap','ab','few','s',4]
>>> l.pop()
4
>>> l.pop()
's'
>>> l
['ab', 'c', 'nihap', 'ab', 'few']
>>> l.pop(2)
'nihap'
>>> l
['ab', 'c', 'ab', 'few']


字符串中,由于字符串是不可变的所以,对字符串的删除,修改,实际上都是重新赋值了
在字符串中,没有实实在在的删除,而是用替换、切片取值或者strip删除开头指定字符串方法,产生字符串副本例如:
>>> st = 'abcdefghijklmn'
>>> st1 = st.replace('abc','')---------st本身没变,而是将他其中的某子串替换后,产生一个副本st1
>>> st
'abcdefghijklmn'
>>> st1
'defghijklmn'
-------------------------------------------------------------------切片取值的方法
>>> st2 = st1[2:]
>>> st
'abcdefghijklmn'
>>> st2
'fghijklmn'
-------------------------------------------------------------------strip方法,只能删除字符串开始结尾处指定子串(包括单个字符
s = "abcdjfab"
>>> s.strip('ab')
'cdjf'

声明:s为字符串,rm为要删除的字符序列

s.strip(rm)        删除s字符串中开头、结尾处,位于 rm删除序列的字符

s.lstrip(rm)       删除s字符串中开头处,位于 rm删除序列的字符

s.rstrip(rm)      删除s字符串中结尾处,位于 rm删除序列的字符

注意:

1. 当rm为空时,默认删除空白符(包括'\n', '\r',  '\t',  ' ')

元组中,元组是不可变的,所以不能删除或者修改元组中的元素,只能重新赋值,即拷贝副本
元组是没有相关的删除操作的,如果要改变元组中的元素,只能先转化为列表,修改后再转化为元组,其实也相当于是重新赋值了。
>>> tu
(1, 2, 3, 4)
>>> l = list(tu)
>>> l.pop(1)------------------------list原地弹出一个元素,并且返回此元素
2
>>> l
[1, 3, 4]
>>> tu = tuple(l)--------------------------此处只是返回一个元组,l本身还是list=【1,3,4
>>> tu
(1, 3, 4)

字典中,由于自定是可变的,所以可以直接删除元素:
>>> d = {'name':'lorine','hight':162,'weight':97,'fav':'basketball'}
>>> d['hight']= 164
>>> d
{'fav': 'basketball', 'name': 'lorine', 'weight': 97, 'hight': 164}----------------字典是无序的,所以你可以看到和定义时的元素排序不一样了
>>> del d['hight']------------------------删除key为hight的条目
>>> d
{'fav': 'basketball', 'name': 'lorine', 'weight': 97}
>>> d.pop('weight')------------------------弹出key为weight的值,并且删除
97
>>> d.clear()------------------------------清空字典中的所有内容
>>> d
{}
>>> del d----------------------------------删除字典
>>> d
Traceback (most recent call last):
  File "", line 1, in
NameError: name 'd' is not defined

集合,set集合是和字典类似,他是可变的,无序的:
>>> se = set('abc')
>>> se
set(['a', 'c', 'b'])
>>> se.add('python')-----------------------‘python’作为一个整体元素加入到集合中
>>> se
set(['a', 'python', 'c', 'b'])
>>> se.update('python')--------------------‘python’中已单个元素作为set元素加入到set中
>>> se
set(['a', 'c', 'b', 'python', 'h', 'o', 'n', 'p', 't', 'y'])
>>> se.update(22)-------------------------- 为什么报错?因为update需要可迭代的类型参数,而int不是可迭代类型,所以报错
Traceback (most recent call last):
  File "", line 1, in
TypeError: 'int' object is not iterable
>>> se.add(2)------------------------------ 而add不需要可迭代类型
>>> se
set(['a', 'c', 'b', 'python', 'h', 2, 'o', 'n', 'p', 't', 'y'])
>>> se.add('a')---------------------------- 本来set中已经有'a'了,在继续add的话,就覆盖了原来的'a'
>>> se
set(['a', 'c', 'b', 'python', 'h', 2, 'o', 'n', 'p', 't', 'y'])
>>> se.remove('a')------------------------- 删除‘a’
>>> se
set(['c', 'b', 'f', 'python', 'h', 2, 'o', 'n', 'p', 't', 'y'])
>>> se.remove('i')------------------------- 删除不存在的元素,报错
Traceback (most recent call last):
  File "", line 1, in
KeyError: 'i'
>>> se.remove(2)
>>> se
set(['c', 'b', 'f', 'python', 'h', 'o', 'n', 'p', 't', 'y'])





















阅读(1239) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~