python列表list增加元素的4个方法:直接+,append()和.extend() .insert()的应用及分离列表里奇数偶数的方法
python列表list增加元素的4个方法:直接+,append()和.extend() .insert()的应用体验
#
先看一个应用例子:python分离列表中的偶数和奇数.
a = [1, 2, 3, 4, 5, 6, 7, 8, 8]
odd = list()
even = list()
n = 0
while n <= (len(a) - 1): #注意:这里边界限值,勿忘减一。索引号的最大值是列表的长度(元素个数)减1,这一点容易忽略,出错.
if a[n] % 2 == 0:
even.append(a[n]) #这是把a列表里的第n位元素,添加到even列表里.
else:
odd.append(a[n])
n += 1
print('奇数是', odd)
print('偶数是', even)
#------------------------------------------
print('上面是用append,下面将用extend')
a = [1, 2, 3, 4, 5, 6, 7, 8, 8]
odd = list()
even = list()
n = 0
while n <= (len(a) - 1):
if a[n] % 2 == 0:
even.extend(a[n:n + 1]) #注意:这里用.extend,如果还象append那样的形式就不行了,因为根据提示,切片(slice)可以用. 所以,要是只取一位元素添加的话,可以利用列表[]左闭右开的特点,假借切片的形式(a[n:n+1]),这其实还是只取第n位元素.
else:
odd.extend(a[n:n + 1])
n+=1
print('奇数是', odd)
print('偶数是', even)
运行结果如下:
奇数是 [1, 3, 5, 7]
偶数是 [2, 4, 6, 8, 8]
上面是用append,下面将用extend
奇数是 [1, 3, 5, 7]
偶数是 [2, 4, 6, 8, 8]
[Finished in 0.1s]
上面的办法,源于初学自然思维,后来看到老师答案,觉得比较妙.
number = [1,2,3,4,5,6,7,8,8]
even=[] #[ ]与list()等效
odd =[] #odd代表奇数
while len(number)>0: #当列表长度>0即列表不为空的时候
numbers= number.pop( ) #从列表中取出一个元素赋值给numbers,.pop()默认从尾部取,也可指定索引位取元素,如.pop(2)
if numbers%2==0: #如果numbers对2取余(%)值为0,即能被2整除,
even.append(numbers) #把numbers用.append()添加到even列表中,even表偶数
#even.insert(0,numbers)#如用insert(),功能上和一样,但指定把number插入到0位,即放在最前,以便打印even2能把大数放在后面.
else: #但是上句是想当然地认为列表里的元素是大数在后面的情况.
odd.append(numbers)
print ('奇数是',sorted(odd)) #print()里的字符与函数用逗号隔开,否则报错; sotrted()是函数.注意使用方法格式.
print ('偶数是',sorted(even)) #如用sorted(odd,reverse=True) ,则表示降序;.sort是方法.
用.pop()方法,不用为控制循环再用 n+=1,减少了计算量,又节约内存空间占用,效率高
运行结果:
奇数是 [1, 3, 5, 7]
偶数是 [2, 4, 6, 8, 8]
[Finished in 0.1s]
壹:
增加一个元素
把列表里某一位元素加到a,以下三方法所得的结果没什么差别.都是散兵,都好混入.
一.a=a+b[n,n+1]
a=a+b 有返回值.
二.a.extend(b[n,n+1])
.extend() 不可用a=a.extend()这种方式,因为不产生新对象,只是对原对象本身进行动作.这样写,最后a是一个空值类型.
上面两种方式可以实现最终相同的效果,但用相加的方式因为产生新对象(别人说的)有返回值可能会加大内存开销,但写代码时简便了一些。
三.a.append(b[n])
.append()也不可用a=a.append()这种方式.
注意:a.append(b[n])只有在添加某1个元素的时候,会有相同效果,多于一个,效果都不一样了。
四. a.insert(n,b[x])
.insert(n是要插入点的索引位号,b列表指定的元素),注意:插入一个元素.如果是带多个元素进去,则进去后会被引号包起来.
print('下面是在a中增加b列表中的一个元素')
print('一.下面先是用+ 来做追加')
a=[2,3]
b=[2,3]
print('a',a)
print('b',b)
a=a+b[0:1]
print('a=a+b[0:1]的结果',a)
#--------------------------
print('*'*30)
print('二.下面追加是用.append()')
a=[2,3]
b=[2,3]
print('a',a)
print('b',b)
a.append(b[0])
print('a.append(b[0])的结果',a)
#--------------------------
print('*'*30)
print('三.下面追加是用.extend()')
a=[2,3]
b=[2,3]
print('a',a)
print('b',b)
a.extend(b[0:1])
print('a.extend(b[0])的结果',a)
#--------------------------
print('*'*30)
print('四.下面混入是用.insert(1,b[n]')
a=[2,3]
b=[2,3]
print('a',a)
print('b',b)
a.insert(1,b[1]) #把b列表中的第1位的3,加到a的1位上
print('a.extend(b[0])的结果',a)
print('*'*30)
print('''前面4种方法,加入单独一个元素(从a到b里),效果都是相同的,外观上没有差别,
就是说进入的元素没有被引号包起来成为另类''')
运行效果如下:
下面是在a中增加b列表中的一个元素
一.下面先是用+ 来做追加
a [2, 3]
b [2, 3]
a=a+b[0:1]的结果 [2, 3, 2]
******************************
二.下面追加是用.append()
a [2, 3]
b [2, 3]
a.append(b[0])的结果 [2, 3, 2]
******************************
三.下面追加是用.extend()
a [2, 3]
b [2, 3]
a.extend(b[0])的结果 [2, 3, 2]
******************************
四.下面混入是用.insert(1,b[n]
a [2, 3]
b [2, 3]
a.extend(b[0])的结果 [2, 3, 3]
******************************
前面4种方法,加入单独一个元素(从a到b里),效果都是相同的,外观上没有差别,
就是说进入的元素没有被引号包起来成为另类
[Finished in 0.1s]
贰:
增加多个元素
此时差别明显,形式上,b列表中要选出的元素,都是用切片(即带有: )的方式表达,比如b[x:y],就是把b中, x位上起,到y-1位止的所有元素. 因为列表切片的[x :y ],含义是左闭右开,意思是包括左边x位置上的元素,但不包括y位上的元素,而是y位挨前边那一位即y-1位上的元素.
一.这个时候,插进去元素, extend()方式与列表直接+ 的方式,这两个相类似,都是全身心混入,不带自身特色.不另类,都没有被引号包裹.
#---下面是添加多个元素例子------------------
print('*'*60)
print('列表中添加另一列表多个元素的例子:')
print('1.用extend()')
a=[1,2,3]
b=[4,5,6]
print('a',a)
print('b',b)
a.extend(b[1:3]) #把b中索引1位上的5,3-1位上的6,两个元素混入到a里.注意:索引位号都是从0开始.
print('a.extend(b[1:3])的结果',a)
#--------------------------
print('-'*40)
print('2.直接用+ ')
a=[1,2,3]
b=[4,5,6]
print('a',a)
print('b',b)
a=a+b[1:3] #把b中索引1位上的5,3-1位上的6,两个元素加到a里.注意:索引位号都是从0开始.
print('a=a+b[1:3]的结果',a)
#--------------------------
下面是运行结果:
列表中添加另一列表多个元素的例子:
1.用extend()
a [1, 2, 3]
b [4, 5, 6]
a.extend(b[1:3])的结果 [1, 2, 3, 5, 6]
----------------------------------------
2.直接用+
a [1, 2, 3]
b [4, 5, 6]
a=a+b[1:3]的结果 [1, 2, 3, 5, 6]
[Finished in 0.2s]
由上面可以看出,.extend()方法与直接+的方法,输出值是相同的.
二.用.append(b[x:y])与.insert(n,b[x:y])
print('1.用.append(b[x:y])')
a=[1,2,3]
b=[4,5,6]
print('a',a)
print('b',b)
a.append(b[1:3]) #把b中索引1位上的5,3-1位上的6,两个元素混入到a里.注意:索引位号都是从0开始.
print('a.append(b[1:3])的结果',a)
#--------------------------------
print('2.用.insert(n,b[x:y]')
a=[1,2,3]
b=[4,5,6]
print('a',a)
print('b',b)
a.insert(3,b[1:3]) #把b中索引1位上的5,3-1位上的6,两个元素混入到a的3位上(即追加到最后一位开始),.注意:索引位号都是从0开始.
print('a.insert(3,b[1:3])的结果',a)
#--------------------------------
下面是运行结果:
1.用.append(b[x:y])
a [1, 2, 3]
b [4, 5, 6]
a.append(b[1:3])的结果 [1, 2, 3, [5, 6]]
----------------------------------------
2.用.insert(n,b[x:y]
a [1, 2, 3]
b [4, 5, 6]
a.insert(3,b[1:3])的结果 [1, 2, 3, [5, 6]]
[Finished in 0.2s]
结果是添加的元素5 6都被用中括号包了起来[5,6],
由此可见.append()与.insert()的结果是相同的.
由以上也可以看出,有文章里说这几个有的不能用于多个元素的那个说法是不确切的.
还没有评论,来说两句吧...