码迷,mamicode.com
首页 > 编程语言 > 详细

python--数据结构

时间:2017-07-27 11:59:02      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:insert   items   erb   hello   转换   应该   生成   创建   value   

List方法

技术分享

 

append(element)

li1 = ["hello", "fftu", 99];

li1.append("verb");
print(li1);    #[hello, fftu, 99, verb]

 

li1 = ["hello", "fftu", 99];
li2 = ["adv", "pron", "adj"];

li1.append(li2);
print(li1);    #[hello, fftu, 99, [adv, pron, adj]]

 

可以看出:不管被添加的什么数据类型,append()方法都会将其作为List的最后一个元素进行填充。

 

extend(element)

li1 = ["hello", "fftu", 99];
li2 = ["adv", "pron", "adj"];

# li1.extend(li2);
li1 += li2;

print(li1);    [hello, fftu, 99, adv, pron, adj]

中间两句是等价的

 

insert(i, element)

i是元素将要占据的索引

li1 = ["hello", "fftu", 99];
li2 = ["adv", "pron", "adj"];

li1.insert(1, li2);
print(li1);     #[hello, [adv, pron, adj], fftu, 99]

 

remove(element)

li1 = ["hello", "fftu", 99];
li2 = ["adv", "pron", "adj"];

li1.remove("hello");
print(li1);     #[fftu, 99]

 

pop(i)

li1 = ["hello", "fftu", 99];
li2 = ["adv", "pron", "adj"];

li1.pop(1);
print(li1);     #[hello, 99]

如果不传递参数i,默认删除最后一个元素。

这个函数有返回值,返回值为被删除的元素

 

clear()

移除列表所有元素,变成空List

 

index(element)

li1 = ["hello", "fftu", 99];
li2 = ["adv", "pron", "adj"];

print(li1.index(99));     #2

 

count(element)

li1 = ["hello", "fftu", 99, "fftu"];
li2 = ["adv", "pron", "adj"];

print(li1.count("fftu"));     #2

 

 

将列表当做堆栈使用

堆栈作为特定的数据结构,特性是“后进先出”

append()将元素压入堆栈顶

pop()从堆栈顶部取出(删除元素)

 

技术分享

 

将列表作为队列使用

貌似得引入queue,不会

 

 

列表推导式

通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

 

实例:列表元素*3生成新列表

li1 = [1, 5, 10];

result = [(3 * element) for element in li1];

print(result);      #[3, 15, 30]

 

修改上面的代码

li1 = [1, 5, 10];

result = [[element, 3 * element] for element in li1];

print(result);      #[[1, 3], [5, 15], [10, 30]]

 

 

使用函数格式化List元素,生成新List

li1 = [1, 5, 10];
def addWords(element):
    return "未修改前的数字是:" + str(element);

result = [[addWords(element), 3 * element] for element in li1];
print(result);      #[[未修改前的数字是:1, 3], [未修改前的数字是:5, 15], [未修改前的数字是:10, 30]]

 

if作为过滤器

我觉得过滤应该写在推导式的外层

 

 

涉及到两个List

li1 = [1, 5, 10];
li2 = [2, 6, 9];

result = [(li1Element * li2Element) for li1Element in li1 for li2Element in li2];
print(result);      #[2, 6, 9, 10, 30, 45, 20, 60, 90]

 

 

列表转换

其实就是重排矩阵,用得上再重新看一下

 

 

字典

dict1 = {"name": "jiao", "age": 25};

def insertWords(value):
    if(isinstance(value, int)):
        return ("now you are " + str(value));
    if(isinstance(value, str)):
        return ("hello " + value);

result = {str(key): insertWords(dict1[key]) for key in dict1};

print(result);      #{name: hello jiao, age: now you are 25}

 

 

遍历技巧

在字典中遍历时,关键字和对应的值可以使用 items() 方法同时解读出来

dict1 = {"name": "jiao", "age": 25};

for key, value in dict1.items():
    if(isinstance(value, int)):
        print(key + str(value));
    else:
        print(key + value);

#namejiao
#age25

 

 

在序列中遍历时,索引位置和对应值可以使用 enumerate() 函数同时得到

li1 = ["helo", "fftu", 22];

for index, value in enumerate(li1):
    print(str(index) + ":" + str(value));
    

# 0:helo
# 1:fftu
# 2:22

 

 

~END

python--数据结构

标签:insert   items   erb   hello   转换   应该   生成   创建   value   

原文地址:http://www.cnblogs.com/jiaoxuanwen/p/7244037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!