Python中列表(list)操作方法汇总

一、Python创建列表:


1
sample_list = [ 'a' , 1 ,( 'a' , 'b' )]

二、Python 列表操作:

假设有如下列表:


1
sample_list = [ 'a' , 'b' , 0 , 1 , 3 ]

1.得到列表中的某一个值:


1


2

value_start = sample_list[0]


end_value = sample_list[ - 1 ]

2.删除列表的第一个值:


1
del sample_list[ 0 ]

3.在列表中插入一个值:


1
sample_list[ 0 : 0 ] = [ 'sample value' ]

4.得到列表的长度


1
list_length = len (sample_list)

5.列表遍历:


1


2

for element in sample_list:


   print (element)

三、Python 列表高级操作/技巧

1.产生一个数值递增列表:


1


2

num_inc_list = range(30)


#will return a list [0,1,2,...,29]

2.用某个固定值初始化列表:


1


2


3


4


5

initial_value = 0


list_length = 5


sample_list = [ initial_value for i in range(10)]


sample_list = [initial_value]*list_length


# sample_list ==[0,0,0,0,0]


#!/usr/bin/env python
#coding:utf-8
 
#阿拉伯乘法
def arabic_multiplication(num1,num2):
   num_lst1 = [ int (i) for i in str (num1)] #将int类型的123,转化为list类型的[1,2,3],每个元素都是int类型
   num_lst2 = [ int (i) for i in str (num2)]
 
   #两个list中整数两两相乘
   int_martix = [[i * j for i in num_lst1] for j in num_lst2]
 
   #将上述元素为数字的list转化为元素类型是str,主要是将9-->'09'
   str_martix = [ map (convert_to_str,int_martix[i]) for i in range ( len (int_martix))]
 
   #将上述各个list中的两位数字分开:['01','29','03']-->[0,2,0],[1,9,3]
   martix = [[ int (str_martix[i][j][z]) for j in range ( len (str_martix[i]))] for i in range ( len (str_martix)) for z in range ( 2 )]
 
   #计算阿拉伯乘法表的左侧开始各项和
   sum_left = summ_left(martix)
 
   #计算阿拉伯乘法表的底部开始各项和
   sum_end = summ_end(martix)
 
   #将上述两个结果合并后翻转
   sum_left.extend(sum_end)
   sum_left.reverse()
 
   #取得各个和的个位的数字(如果进位则加上)
   result = take_digit(sum_left)
 
   #翻转结果并合并为一个结果字符串数值
   result.reverse()
   int_result = "".join(result)
   print "%d*%d=" % (num1,num2)
   print int_result
 
#将int类型转化为str类型,9-->'09'
 
def convert_to_str(num):
   if num< 10 :
     return "0" + str (num)
   else :
     return str (num)
 
#计算阿拉伯乘法表格左侧开始的各项之和
 
def summ_left(lst):
   summ = []
   x = [i for i in range ( len (lst))]
   y = [j for j in range ( len (lst[ 0 ]))]
   sx = [i for i in x if i % 2 = = 0 ]
   for i in sx:
     s = 0
     j = 0
     while i> = 0 and j< = y[ - 1 ]:
       s = s + lst[i][j]
       if i % 2 = = 1 :
         j = j + 1
       else :
         j = j
       i = i - 1
     summ.append(s)
   return summ
 
#计算阿拉伯乘法表格底部开始的各项之和
 
def summ_end(lst):
   summ = []
   y = [j for j in range ( len (lst[ 0 ]))]
   ex = len (lst) - 1
   for m in range ( len (y)):
     s = 0
     i = ex
     j = m
     while i> = 0 and j< = y[ - 1 ]:
       s = s + lst[i][j]
       if i % 2 = = 1 :
         j = j + 1
       else :
         j = j
       i = i - 1
     summ.append(s)
 
   return summ
 
#得到各个元素的个位数,如果是大于10则向下一个进位
 
def take_digit(lst):
   tmp = 0
   digit_list = []
   for m in range ( len (lst)):
     lstm = 0
     lstm = lst[m] + tmp
     if lstm< 10 :
       tmp = 0
       digit_list.append( str (lstm))
     else :
       tmp = lstm / 10
       mm = lstm - tmp * 10
       digit_list.append( str (mm))
   return digit_list
 
if __name__ = = "__main__" :
   arabic_multiplication( 469 , 37 )



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#! /usr/bin python
#coding:utf-8
 
 
from __future__ import division   #实现精确的除法,例如4/3=1.333333
import random
 
def make_score(num):
   score = [random.randint( 0 , 100 ) for i in range (num)]
   return score
 
def less_average(score):
   num = len (score)
   sum_score = sum (score)
   ave_num = sum_score / num
   less_ave = [i for i in score if i<ave_num]
   return len (less_ave)
 
if __name__ = = "__main__" :
   score = make_score( 40 )
   print "the number of less average is:" ,less_average(score)
   print "the every socre is[from big to small]:" , sorted (score,reverse = True )




1. 原地排序:采用sort()方法,按照指定的顺序排列数据后用排序后的数据替换原来的数据(原来的顺序丢失),如:


代码如下:


>>> data1=[4,2,6,432,78,43,22,896,42,677,12]
>>> data1.sort()
>>> data1       #原来的顺序被替换
[2, 4, 6, 12, 22, 42, 43, 78, 432, 677, 896]



2. 复制排序:采用sorted()内置函数,按照指定的顺序排列数据后返回原数据的一个有序副本(原来的顺序保留),如:


代码如下:


>>> data1=[4,2,6,432,78,43,22,896,42,677,12]
>>> data2=sorted(data1)
>>> data1     
[4, 2, 6, 432, 78, 43, 22, 896, 42, 677, 12]    #原顺序保留
>>> data2    
[2, 4, 6, 12, 22, 42, 43, 78, 432, 677, 896]    #对副本排序
>>>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值