<(|忽然看到通宝娱乐娱乐这个怎样?|)&gt

要求替换后,该的下标不能改变。所以不能使用Remove然后Add的办法。谢谢!
--------------------------------------
遍历替换,,
--------------------------------------
//不是很明白List&T& list = new List&T&();//知道索引list[i] =//知道T元素可以通过FindIndex() 找到T的索引
--------------------------------------
先remove元素,应该知道remove的下标,然后在insert到指定下标,应该就可以了吧
--------------------------------------
int index = list.FindIndex(new Predicate&string&(find));list.Insert(index, "新的值");bool find(string p){
return p.Equals("被替换的值");}
--------------------------------------
你所说的替换,我没理解。是list里的某人item的修改吗?替换应该也是修改吧。直接查找到这个item,然后修改它的值,不是可以吗?
--------------------------------------
遍历替换,,
+1 不过这样肯定效率不高不过反问LZ
var Replace=new&T&LIST&T&[i]=Replace
这样不行吗?感觉也是可以的吧。刚接触泛型不久~~ 不当之处见谅
--------------------------------------
例子,一个 1,2,3 的整数列表,把 2 替换成 4
List&int& list = new List&int&() { 1, 2, 3 };int index = list.FindIndex(v1 =& v1 == 2);list[index] = 4;这一章,有点抽象,看着有点蛋疼!双下划线__future__或单下划线有特殊含义,在Python中,这些名字的集合称为魔法方法:最重要的是__init__和一些处理访问对象的方法,这些方法允许你创建自己的序列或者是映射.------准备工作:将__metaclass__=type放在模块的最开始位置,以确保类时最新式的。考虑下面两个类class NewStyle(object):
more_code_hereclass OldStyle:
more_code_here如果文件以__metclass__=type开始,那么这个类都是新式类------构造方法:和普通方法的不同在于:当一个对象被创建后,会立即调用构造方法。因此,之前章节的&&&f = FooBar()&&&f.init()等同于&&&f = FooBar()&&& class FooBar:def __init__(self):self.var = 42&&& f = FooBar()&&& f.var42#如果有默认参数呢?&&& class Foobar:def __init__(self,value=42):self.var = value&&& f = Foobar()
#无参的话,使用默认值&&& f.var42&&& f1 = Foobar(44)
#有参的话,使用新参数&&& f1.var44在Python中__init__是使用最多的一个.Python中有个魔法方法__del__,析构方法,她在对象要被垃圾回收之前调用.但是发生调用的具体时间是不可知的。所以建立尽力避免使用__del__函数.------重写一般方法和特殊构造方法:&&& class A:...
def hello(self):...
print 'Hello,World!'...&&& class B(A): pass...&&& class C(B): pass...#看看他们的工作机制#c是C类的实例,当c调用hello(),首先找自己类有没有,没有话,去超类B中找,如果还没有话,就去超类的超类去找。还没有的话,就报错。&&& c = C()&&& c.hello()Hello,World!如果重写B类,hello的方法呢?&&& class A:...
def hello(self):...
print &Hello,I am A!&...&&& class B(A):...
def hello(self):...
print &Hello,I am B!&...&&& b = B()&&& b.hello()Hello,I am B!重写是继承机制中的一个重要内容,对于构造方法尤其重要。构造方法用来初始化新创建对象的状态,大多数子类不仅要拥有自己的初始化代码,还要拥有超类的初始化代码。虽然重写的机制对于所有方法来说都是一样的,但是当处理构造方法比重写普通方法时,更可能遇到特别的问题:如果一个类的构造方法被重写,那么就需要调用超类的构造方法,否则对象不会被正确初始化。看下面的例子class Bird:
def __init__(self):
self.hungry = True
def eat(self):
if self.hungry:
print &Ahaha...&
self.hungry = False
print &No, Thanks!&该类定义鸟的基本功能吃,吃饱了就不再吃输出结果:&&& b = Bird()&&& b.eat()Ahaha...&&& b.eat()No, Thanks!下面一个子类SingBird,class SingBird(Bird):
def __init__(self):
self.sound = 'squawk'
def sing(self):
print self.sound输出结果:&&& s = SingBird()&&& s.sing()squawkSingBird是Bird的子类,但如果调用Bird类的eat()方法时,&&& s.eat()Traceback (most recent call last):
File &&pyshell#5&&, line 1, in &module&
File &D:/Learn/Python/Person.py&, line 42, in eat
if self.hungry:AttributeError: SingBird instance has no attribute 'hungry'代码错误很清晰,SingBird中初始化代码被重写,但没有任何初始化hungry的代码------调用未绑定的超类构造方法:class SingBird(Bird):
def __init__(self):
Bird.__init__(self)
#增加这行代码就搞定
self.sound = 'squawk'
def sing(self):
print self.sound&&& sb = SingBird()&&& sb.sing()squawk&&& sb.eat()Ahaha...&&& sb.eat()No, Thanks!------使用super函数:__metaclass__=typeclass Bird:
def __init__(self):
self.hungry = True
def eat(self):
if self.hungry:
print &Ahaha...&
self.hungry = False
print &No, Thanks!&class SingBird(Bird):
def __init__(self):
super(SingBird,self).__init__()
self.sound = 'squawk'
def sing(self):
print self.soundNote:1. __metaclass__=type 必不可少,否则报错如下:&&& sb = SingBird()Traceback (most recent call last):
File &&pyshell#5&&, line 1, in &module&
sb = SingBird()
File &D:/Learn/Python/Person.py&, line 51, in __init__
super(SingBird,self).__init__()TypeError: must be type, not classobj2.&super(SingBird,self).__init__() &多了这么一句输出结果:&&& sb = SingBird()&&& sb.sing()squawk&&& sb.eat()Ahaha...&&& sb.eat()No, Thanks!------基本的序列和映射规则:序列和映射是对象的集合,为了实现他们的基本行为,如果对象是不可变的,那么就需要两个魔法方法,如果对象时可变的,那么就需要四个魔法方法__len__(self):返回集合中所含项目的数量__getitem__(self,key):返回与所给的键对应的值__setitem__(self,key,value):按一定的方法存储和key相关的value__delitem__(self,key):删除对象相关的键实践一下,创建一个无穷序列def checkIndex(key):
if not isinstance(key,(int,long)):
raise TypeError
raise IndexErrorclass ArithmeticSequence:
def __init__(self,start=0,step=1):
self.start
self.changed = {}
def __getitem__(self,key):
checkIndex(key)
return self.changed[key]
except KeyError:
return self.start + key*self.step
def __setitem__(self,key,value):
checkIndex(key)
self.changed[key] = value输出结果&&& s[100]201&&& s = ArithmeticSequence(1,2)&&& s[4]9&&& s[10]21&&& del s[4]Traceback (most recent call last):
File &&pyshell#10&&, line 1, in &module&
del s[4]AttributeError: ArithmeticSequence instance has no attribute '__delitem__'&&& s['four']Traceback (most recent call last):
File &&pyshell#11&&, line 1, in &module&
s['four']
File &D:/Learn/Python/Person.py&, line 71, in __getitem__
checkIndex(key)
File &D:/Learn/Python/Person.py&, line 62, in checkIndex
raise TypeErrorTypeError&&& s[-4]Traceback (most recent call last):
File &&pyshell#12&&, line 1, in &module&
File &D:/Learn/Python/Person.py&, line 71, in __getitem__
checkIndex(key)
File &D:/Learn/Python/Person.py&, line 64, in checkIndex
raise IndexErrorIndexError------子类化列表,字典和字符串三个关于序列和映射规则(UserList,UserString,UserDict),如果希望实现一个和内建列表行为相似的序列,可以使用子类list,看看下面的例子,带有访问计数的列表class CounterList(list):
def __init__(self,*args):
super(CounterList,self).__init__(*args)
self.counter = 0
def __getitem__(self,index):
self.counter +=1
return super(CounterList,self).__getitem__(index)#下面是她如何使用的一些例子&&& c = CounterList(range(10))&&& c[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]&&& c.reverse()&&& c[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]&&& del c[3:6]&&& c[9, 8, 7, 3, 2, 1, 0]&&& c.counter0&&& c[4]+c[2]9&&& c.counter2#其他跟list性能一样,但有个counter特性,每次执行加法后会自增。------属性:class Rectangle:
def __init__(self):
self.width
self.height = 0
def setSize(self,size):
self.width,self.height = size
def getSize(self):
return self.width,self.height&&& r= Rectangle()&&& r.width = 10&&& r.height= 5&&& r.getSize()(10, 5)&&& r.setSize((150,100))&&& r.width150------property函数:__metaclass__=typeclass Rectangle:
def __init__(self):
self.width
self.height = 0
def setSize(self,size):
self.width,self.height = size
def getSize(self):
return self.width,self.height
size = property(getSize,setSize)在这个新版的Rectangle中,property函数创建了一个属性,其中访问器函数被用做参数(先是取值,然后是赋值),这个属性命为size,这样一来,就不用担心是如何实现的,可以用同样的方式处理width,height和size.&&& r = Rectangle()&&& r.width = 10&&& r.height= 20&&& r.size(10, 20)&&& r.size = 100,200&&& r.width100property函数可以用0,1,2,3或4个参数来调用。如果没有参数,产生的属性即不可读,也不可写。如果只使用一个参数调用,产生的属性是只读的第3个参数。名字分别叫:fget,fset,fdel,doc__------静态方法和类成员方法静态方法和类成员方法分别在创建时被装入Staticmethod类型和Classmethod类型的对象中。静态方法的定义没有self参数,且可能被类本身直接调用。类方法在定义时需要名为cls的类似于self的参数,类成员方法可以直接用类的具体对象调用。但cls参数是自动被绑定类的。看下例子:class MyClass:
def smeth():
print 'This is a stacie method'
smeth = staticmethod(smeth)
def cmeth(cls):
print 'This is a class method of', cls
cmeth = classmethod(cmeth)#用@来替代__metaclass__ = typeclass MyClass:
@staticmethod
def smeth():
print 'This is a stacie method'
@classmethod
def cmeth(cls):
print 'This is a class method of', cls#定义好了方法后,可以这样调用。&&& MyClass.smeth()This is a stacie method&&& MyClass.cmeth()This is a class method of &class '__main__.MyClass'&------__getattr__,__setattr__为了访问特性的时候可以执行代码,必须使用一些魔法方法。下面四种方法提供了需要的功能。__getattrbute__(self,name): 当特性name被访问时,自动被调用__getattr__(self,name):当特性name被访问,且对象没有相应的特性时被自动调用__setattr__(self,name,value):当试图给特性name赋值时会被自动调用__delattr__(self,name): 当试图删除特性name时被自动调用。class Rectangle:
def __init__(self):
self.width
self.height = 0
def __setattr__(self,name,value):
if name == 'size':
self.width,self.height = value
self.__dict__[name] = value
def __getattr__(self,name):
if name == 'size':
return self.width,self.height
raise AttributeError------迭代器:主要讨论特殊的方法:__iter__这个迭代器规则的基础.__iter__方法返回一个迭代器,所谓迭代器就是具有next方法的对象。如果next被调用,却没有值可以返回,则会返回StopIteration的异常.为什么要用迭代器而不用列表呢?如果值很多,列表一次性获得,会占用太多的内存。而迭代则可以一个一个获取。还有为什么要用迭代器的原因:迭代器更通用,更简单,更优雅。class Fibs:
def __init__(self):
self.a = 0
self.b = 1
def next(self):
self.a,self.b = self.b,self.a + self.b
return self.a
def __iter__(self):
return self首先是实现了__iter__方法,这个方法实际上返回迭代器本身。很多情况下,__iter__会放到for循环中使用的对象中.首先产生一个Fibs对象&&& fibs = Fibs()其次可在for循环中使用该对象-比如去查找在斐波那契数列中比1000大的数中的最小的数:&&& for f in fibs:if f&1000:print fbreak1597Note: 内建函数iter可以从可迭代的对象中获得迭代器.&&& it = iter([1,2,3])&&& it.next()1&&& it.next()2除此之外,它也可以从函数或者其他可调用对象中获取可迭代对象.------从迭代器中得到序列:除了再迭代器和可迭代对象上进行迭代外,还能把它们转换为序列。在大部分能使用序列的情况下,能使用迭代器替换。一个很有用的例子是使用list构造方法显式地将迭代器转化为列表class TestIter:
def next(self):
self.value +=1
if self.value & 10 :
raise StopIteration
return self.value
def __iter__(self):输出结果:&&& ti = TestIter()&&& ti&__main__.TestIter instance at 0xA81A08&&&& list(ti)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]------生成器: 是Python新引入的概念,由于历史原因,它也叫简单生成器。它和迭代器可能是近几年来引入的最强大的两个特性。生成器可以帮助程序员写出非常优雅的代码,当然编写任何程序也不可以不使用。生成器是一种用普通的函数语法定义的迭代器。------创建生成器:nested = [[1,2],[3,4],[5]]如果像这么个例子,怎么样用将数字一一打印出来。def flatten(nested):
for sublist in nested:
for element in sublist:
yield element#如何包含yield的语句,称为生成器&&& nested = [[1],[2,3],[4,5,6]]&&& flatten(nested)&generator object flatten at 0x35A0&&&& for num in flatten(nested):
print num 123456------递归生成器:上一个例子创建的生成器只能处理两层嵌套,使用了两个for循环。如果要处理任意层的嵌套怎么办?就应该更灵活,现在就到了递归生成器登场的时候了。def flatten(nested):
for sublist in nested:
for element in flatten(sublist):
yield element
except TypeError:
yield nested两种情况: 基本情况和需要递归的情况1. 如果只是元素,函数被告知展开一个元素,这种情况下,for循环会引发一个TypeError异常,生成器会产生一个元素.2. 如果是一个列表,那么就要进行特殊处理。程序必须遍历所有子列表,并对它们调用flatten,然后使用另一个for循环来产生被展开的子列表中的所有元素,很神奇吧。&&& nested = [[[[1,2],3],4],5]&&& list(flatten(nested))[1, 2, 3, 4, 5]如果是字符串对象,那么它就是一个序列,不会引发TypeError,如果你不想对这样的对象进行迭代。为了处理这种情况,则必须在生成器的开始处添加一个检查语句。试着将传入的对象和一个字符串拼接,看看会不会出现TypeError,这是检查一个对象是不是类似于字符串的最简单,最快速的方法。下面加入检查语句的生成器。&&& nested=['a',[[[1,2],3],4],5]&&& list(flatten(nested))['a', 1, 2, 3, 4, 5]------通用生成器:生成器是一个包含yield关键字的函数。当它被调用时,在函数体中的代码不会被执行,而会返回一个迭代器。每次请求一个值,就会执行生成器中的代码,知道遇到一个yield或者return语句。yield意味着应该生成一个值。return语句意味着生成器要停止执行。换句话说,生成器由两部分组成:生成器的函数和生成器的迭代器。生成器的函数是用def语句定义,包含yield部分,生成器的迭代器是这个函数返回的部分。&&& def simple_generator():yield 1&&& simple_generator&function simple_generator at 0xAFB0B8&&&& simple_generator()&generator object simple_generator at 0xC8EE8&&&& ------生成器方法:&&& def repeater(value):
while True:
new = (yield value)
if new is not None: value = new输出结果:&&& r = repeater(42)&&& r.next()42&&& r.next()42&&& r.send('Hello,World!')'Hello,World!'#next()方法,send()方法,throw()方法,close()方法------模拟生成器:如何使用普通的函数模拟生成器首先将下面语句放在程序的开始处result = []然后将下面这种形式的代码:yield some_expression用下面的语句替换:result.append(some_expression)最后在函数的末尾,添加下面的语句:&return result下面是flatten生成器用普通的函数重写的版本def flatten(nested):
result = []
try: nested + ''
except TypeError: pass
else: raise TypeError
for sublist in nested:
for element in flatten(sublist):
result.append(element)
except TypeError:
result.append(nested)
return result输出结果:&&& n = [[[[[['HaHa...'],1],2],3],4],5]&&& flatten(n)['HaHa...', 1, 2, 3, 4, 5]------本章新函数iter(obj) & & & & & & & & & & & & & &从一个可迭代的对象得到迭代器property(fget,fset,fdel,doc) & & & & 返回一个属性,所有参数都是可选的super(class,obj) & & & & & & & & & & 返回一个类的超类的绑定实例怎样买到河北省&&2012高考试题分析&&_百度知道
怎样买到河北省&&2012高考试题分析&&
毫无根据的谣言,不请自来的客人,沉默的,万无一失,机智,勾心斗角胜利,暗暗吃惊,漂亮的牙齿,耀武扬威,追逐自己的尾巴匆匆
其他类似问题
为您推荐:
高考试题的相关知识
其他1条回答
买书去哪买都不知道啊
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁编c语言时,“a&2||b&8”表示什么意思?_百度知道
编c语言时,“a&2||b&8”表示什么意思?
&lt。 a &gt&gt,并不是C的语法;是小于号,这是转义字符; 2 || b &是大于号
其他类似问题
为您推荐:
c语言的相关知识
其他2条回答
| 或运算&与运算|| 或判断&&且判断
怎么源程序都没有·
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&1.属性值css中包含了大量不同的属性,他们可以分为七类:字体、列表、文本对齐、边距、颜色、背景、边框。①.字体属性字体属性是样式表属性中最常用的属性。(1)字体族font-family属性font-family用来指定一系列字体名称。浏览器将利用字体列表中它能支持的第一种字体进行显示。eg:
font-family :Arial,Helvetica,Futura(2)字体大小font-size属性font-size用来指定字体的大小。有两种指定方式,第一种方式是指定绝对值,可以用像素px来表示,也可以用关键字:xx-small、x-small、medium、large、x-large、xx-large来形容。第二种方式是使用相对值,可以用百分比或者em符号来表示,如1.2就相当于120%,表示大小为父元素字体大小的1.2倍。(3)字体变体font-variantfont-variant属性的默认值是normal,它指定通常使用的字体样式。这个属性还可以设置为small-caps,指定小型大写字母字符,小型大写字母字符都是大写字母,但是正常的大写字母比正常的小写字母稍微大些。eg:css: #textred{ color:font-variant:small-caps}html:
&!DOCTYPE html&&html&&head&&meta charset=&UTF-8&&&title&Magic_Conch&/title& &link href = &NewFile.css& type=&text/css& rel=&stylesheet&&&/head&&body& &h1 id=&textred&& aAbBcC &/h1& &h1& aAbBcC &/h1&&/body&&/html&运行结果:(4).字体样式font-stylefont-style最常用的一种途径是指定文本为斜体。eg:font-style:italic(5).字体粗细font-weightfont-weight用于指定字体的加粗程度,参数有normal、bold这两个绝对值,bolder、lighter这两个相对值,是相对于父元素的加粗等级而言的。还可以指定100~900之内的100的倍数作为参数值,其中400的效果和normal一样,700的效果和bold一样。(5).简写字体属性font如果必须同时指定多个字体属性,那么属性值可以作为一个列表来作为属性font的值。eg:font:%20bold%201.1em%20'Times%20New%20Roman'%20palatino这行代码指定了字体的粗细为bold,字体大小为其父元素的1.1倍,以Times%20New%20Roman字体或者palatino字体来显示,优先使用前者。font属性中的顺序是很重要的,其中的顺序必须为:字体名称必须在最后,字体大小倒数第二位,当包含字体样式,字体变体和字体粗细时,他们可以是任何顺序,但必须在字体大小前面。在font值列表中,只有字体大小和字体族是必须的。&%20&%20(6).文本修饰text-decorationtext-decoration用来指定文本的某些特殊特征。该属性可能的取值为line-through、overline、underline和none,默认值为none。显示效果如下图:(7).文本间距letter-spacing%20word-spacing%20line-heightletter-spacing表示的是单词的各个字母之间的距离,取值是normal或者任意大小的数值,单位为px,如1px,字母间距比父元素大一像素,-1px则是小一像素。word-spacing指的是单词之间的距离,line-height指的是文本行之间的距离。属性值也是类似的。②.列表属性list-style-type无序列表:属性值:disc、circle、square、none用于指定列表前面的序号形式disc是默认值,是小的实心源泉,circle是空心圆圈,square是实心正方形。此外,还可以自己指定图片,需要提供该图片的url地址。用list-style-image实现,参数为url(图片url)%20eg:list-style-image:url(myimage.gif);有序列表:type 类 型描 述type=1表示列表项目用数字标号(1,2,3...)type=A表示列表项目用大写字母标号(A,B,C...)type=a表示列表项目用小写字母标号(a,b,c...)type=I表示列表项目用大写罗马数字标号(Ⅰ,Ⅱ,Ⅲ...)type=i表示列表项目用小写罗马数字标号(i,ii,iii...)③.文本对齐这一部分操作可以参考常见的办公软件。text-indent该属性用来指定段落首行的缩进格式。该属性的取值可以取长度值也可以为百分比值。text-align该属性用于在水平方向上排列文本,常用属性值为left,center,right,justify分别为左对齐,中心对齐,右对齐,两端对齐float该属性用来指定图片或者表格的环绕方式,参数为left,right和noneleft表示图片左环绕文字,right表示右环绕。④.颜色colorcolor属性用来指定html元素的前景色background-colorbackground-color可用于指定某种元素的背景色参数可以为系统定义的参数也可以是颜色的十六进制码.2.盒模型如图,每一个页面都可以看做是一个盒子模型。padding是内边距,margin是外边距,border是边框。我们在设计的时候可以根据盒模型来对网页进行设计。①.边框每一个元素都有一个border-style的属性,该属性用于控制元素内容是否含有一个边框,并可以指定边框的样式,参数有:dotted、dashed、solid、double、none,默认值是none,所以大部分元素内容一般情况之下都没有边框。border-width该属性可以指定边框宽度,该属性的取值可以为thin、medium和thick,当然,我们也可以用像素作为单位。border-top-width border-bottom-width border-left-width border-right-width如果各个方向边框不一样的话,可以用上面的属性来指定边框样式。border-color指定边框颜色border-top-color border-bottom-color border-left-color border-right-color指定不同方向的color②.内边距和外边距在盒模型中,内边距指的是元素内容和其边框之间的距离,外边距指的是元素边框和相邻内容之间的距离。如果元素没有边框,内边距加上外边距就是某个元素内容与其相邻元素内容之间的距离。背景只能覆盖到内边距,但是无法覆盖到外边距。margin-left、margin-right、margin-top、margin-bottom指定外边距的大小padding-left、padding-right、padding-top、padding-bottom指定内边距的大小3.背景图片background-image该属性用于将一张图片放到某个元素的背景中,参数为图片的url值4.&span&标签和&div&标签span标签可以将段落文本中的某一部分提供特殊的属性,本身不含有任何默认布局样式eg:&p& &span class=&textred&& HelloWorld! &/span& Magic_Coch&/p&而div标签是将文档分成几个部分,每一部分的显示都不相同,这时候需要用div将其划分段落,分块显示细节。当然,我们在之后的学习中会进一步说明这两个标签的用法。
无相关信息

我要回帖

更多关于 通宝娱乐7289 的文章

 

随机推荐