python基础学习总结day03

列表,元组,字典,集合

列表和元组:
相同点:

  1. 都可以通过下标访问
  2. 都可以通过做切片

不同点:

  1. 列表是的元素是可以改变的,元组的元素一旦初始化就不能改变。

元组和字典:
相同点:

  1. 元组和字典的key均是不能修改的。

不同点:

  1. 字典的key能够新增,而元组一旦初始化完毕不能删除,不能新增,只能删除整个元组。

列表和字典:

  1. 列表是查找和插入时间随着元素的增加而增加,字典查找和插入的速度极快,不会随着key的增加而变慢。通过key计算位置的算法称为哈希算法(Hash)。
  2. 列表占用的空间小,浪费的内存很少。字典需要占用大量内存,内存浪费多。
  3. 列表的元素是可以改变的,而字典的key是不可变对象。要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key。

集合和字典:

  1. 集合是无序的唯一的,和字典的key是相同的。都是不可变对象,所有字典的key和集合元素不能为list因为list为可变元素。

1.dict字典

a.定义

python中的字典dict相当于是java中的map,是key-value形式的键值对。标志是{key:value,key:value},字典是无序的。
要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key。

info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}

b.创建

# 1.直接创建
dict1 = {'name': 'lisi', 'age': 9, 'address': 'china'}
print(dict1['name'])
>>>lisi

# 2.通过关键字dict和关键字参数创建
dict2 = dict(name='lisi', age=9, address='china')
print(dict2)
>>>{'age': 9, 'name': 'lisi', 'address': 'china'}

# 3.通过zip(拉链函数)创建
dict3 = dict(zip('abc', (1, 2, 3)))
print(dict3)
>>>{'a': 1, 'c': 3, 'b': 2}

# 4.通过二元组列表创建
list = [('name', 'zhangsan'), ('age', 9), ('address', 'china')]
dict4 = dict(list)
print(dict4)
>>>{'age': 9, 'name': 'zhangsan', 'address': 'china'}

# 5.通过字典推导式创建
dict5 = {i: 2 * i for i in range(3)}
print(dict5)
>>>{0: 0, 1: 2, 2: 4}

#6.通过dict.fromkeys()创建
#通常用来初始化字典, 设置value的默认值
dict6 = dict.fromkeys(range(3), 'x')
print(dict6)
>>>{0: 'x', 1: 'x', 2: 'x'}

C.字典的遍历

dict.keys()返回的是key的集合,
dict.values()返回的是values的集合,
dict.items()返回的(key,value)tuple二元组

d1={'name':"zhangsan",'age':20,'gender':"man"} 
for key in d1.keys():
    print(key)
for value in d1.values():
    print(value)
for item in d1.items():
    print(item)

c.字典的方法

1.取值

  1. dict[key],注意key必须是存在的,不存在时会报错
# -*- coding: utf-8 -*-
dict1 = ['name': 'lisi', 'age': 9, 'address': 'china']
dict1['age']
>>>lisi
#如果没有key时会报错
dict['height']
>>> dict['height']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'height'
  1. dict.get(key),如果key不存在时候返回None
    dict.get(key,default)获取key对应的value,若value不存在则返回default
>>> age = info.get('age')
>>> age #'age'键不存在,所以age为None
>>> type(age)
<type 'NoneType'>
>>> age = info.get('age', 18) # 若info中不存在'age'这个键,就返回默认值18
>>> age

2.修改

因为字典是无序的所以修改的时候只能指定key进行修改

dict1  = {'name':'zhangsan'}
dict1['name'] = 'lisi'

3.添加

添加key

dict1['id'] = '110'

Python 字典(Dictionary) update() 函数把字典dict2的键/值对更新到dict里。update相同的key会覆盖,不同的话添加。

#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7}
dict2 = {'Sex': 'female' }
dict.update(dict2)
>>>{'Age': 7, 'Name': 'Zara', 'Sex': 'female'}}

4.删除

对字典进行删除操作,有一下几种:

  1. del
  2. clear()
  3. pop(key):必须指定一个key值进行删除。
  4. popitem():随机删除一个key:value对
del info['name']:只删除一个key
del info:删除整个字典
info.clear():返回{}

5.常用

  1. len():测量字典中,键值对的个数 len(dict)
  2. keys():返回一个包含字典所有KEY的列表dict.keys()
  3. values():返回一个包含字典所有value的列表。dict.values()
  4. 返回一个包含所有(键,值)元组的列表。dict.items()
  5. has_key():dict.has_key(key)如果key在字典中,返回True,否则返回False
  6. setdefault(key,default),获取字典的key的value,若key值没有则使用defalut值。
  7. 判断key是否存在
    方法一:通过 in/not in 来判断键是否在字典中;
    方法二:通过_contains_(key)来判断字典中是否存在该键值。

2.集合

a.特性

set:无序,唯一。(和java中的set定义相同)
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

b.创建

#set创建{}
set1 = {'a','b','c','c','d'}
print(set1)
#set创建set(tuple())
set2= set((1,2,3,4,3,3,2))
print(set2)
#set创建set(list[])
set3 = set([1,2,3,4,4,4,1,2,5])
print(set3)

c.方法

添加:

add只能添加一个,update可以添加多个。

set4 = {'a','b'}
set4.add('c')
print(set4)
set4.update('d','e')
print(set4)

删除:

#remove删除集合中的元素(删除一项) 如果不存在就会报错
#discard删除集合中的元素(删除一项)如果不存在不会报错
#pop(随机移除一个元素)
#clear(清空所有元素)返回set()

set1 = {'a', 'b', 'c', 'd'}
set1.remove('a')
>>>{'b','c','d'}
set1.discard('f')
set1.pop()
>>>{'b','c'}
set1.clear()
>>>set()

其他集合方法:

intersection(取交集,并生成新的集合)
intersection_update(取交集,修改原来的集合)
symmetric_difference(取交集,并生成新的集合)
symmetric_difference_update(取交集,改变原来的集合)
isdisjoint(判断交集,是返回False,否返回True)
issubset(判断子集)
issuperset(判断父集)
union(取并集,并生成新的集合)
update(取并集,改变原来的集合)

3.判断语句(要求掌握多条件判断)

if 条件判断:
  执行语句
elif 条件判断:
  执行语句
else:
  执行语句

4.三目表达式

其他语言的三目运算
java:

int a = 100;
int b = 200;
int c = a>b?a:b;

python:

a = 100
b = 200
c = a if a>b else b

5.循环语句

while的循环语句
在这里插入图片描述

#continue 和 break 用法
i = 1
while i < 10:   
    i += 1
    if i%2 > 0:     # 非双数时跳过输出
        continue
    print i         # 输出双数2、4、6、8、10
i = 1
while 1:            # 循环条件为1必定成立
    print i         # 输出1~10
    i += 1
    if i > 10:     # 当i大于10时跳出循环
        break

for循环

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
for letter in 'Python':     # 第一个实例
   print '当前字母 :', letter
 
fruits = ['banana', 'apple',  'mango']
for fruit in fruits:        # 第二个实例
   print '当前水果 :', fruit
 
print "Good bye!"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值