python学习笔记三——数据的操作

3、数据结构的操作

3.1 迭代

  • 列表推导/列表生成

#将字符串转化成对应的ascll字符
symbols = 'abcdef'
#列表推导
codes = [ord(symbol) for symbol in symbols]
#列表生成
codes = tuplle(ord(symbol) for symbol in symbols)
  • 字典推导

#将列表转化为字典
DIAL_CODES = [(86,'CHINA'),(91,'INDIA'),(1,'UNITED STATE')]
country_code = {country:code for code,country in DIAL_CODES}
  • 集合推导

#把编码在32~255之间的字符的名字里有”SIGN“单词的挑出来,放在一个集合中
{chr(i) for i in range(32,256) if 'SIGN' in name(chr(i),'')}

3.2切片

  • 一维数组/列表,无非记住一个规则 arr_name[start : end :step]

    [:]表示复制源列表

    负的index表示,从后往前。-1表示最后一个元素

  • 二维(多维)数组的一般语法为arr_name[行操作,列操作]

    取行数据:

    • arr[i,:] #取第i行数据arr[i:j, :] #取第i行到第j行的数据

    取列数据:

    • arr[: ,0] #取第0列数据,以行的形式返回

    • arr[:, :1] #取第0列数据,以列的形式返回

    取数据块:

    • arr[1:2, 1:3] #取第二行同时是第二列和地三列的元素

    • arr[:, ::2] #取第一维的全部,按步长取第二维索引0到末尾之间的元素

3.3排序

3.3.1排序

fruits = ['grape','raspberry','apple','banana']
​
#list.sort方法
fruits.sort(key=len,reverse=False)
​
#内置的sorted方法
sorted(fruits,key=len)

3.3.2 用bisect来搜索

#bisect(haystack, needle):在haystack(干草垛)中搜索needle(针)的位置
import bisect
HAYSTACK = [1,4,5,6,7,12,20,21,23,26,29,30]
NEEDLES = [0,1,2,5,8,10,22,23,29,30,31]
​
ROW_FMT = '{0:2d} {1:2d}    {2}{0:<2d}'
for needle in reversed(NEEDLES):
    position = bisect(HAYSTACK,needle)
    offset = position * '   |'
    print(ROW_FMT.format(needle,position,offset))

3.3.3 用bisect.insort向有序表插入值

#insort可以保持有序序列的顺序
import bisect
import random
​
SIZE = 7
random.seed(1729)
my_list = []
for i in range(SIZE):   
    new_item = random.randrange(SIZE*2)
    bisect.insort(my_lsit,new_item)
    print('%2d ->' % new_item,my_lsit)
 

3.4拼接

3.4.1字符串拼接

#直接通过加号(+)操作符连接
website w = 'python' + 'tab' + '.com'
​
#join方法
listStr = ['python', 'tab', '.com'] 
website = ''.join(listStr)

3.4.2 列表拼接

aList = [123, 'xyz', 'zara', 'abc']
aList.append(2009)
aList.extend([2010])
"Updated List : {}".format(aList)

猜你喜欢

转载自blog.csdn.net/jasonzhoujx/article/details/81506245