python基础

List

1.创建

L = [1,True,'ad',''] //相当于数组,可以存储不同类型的元素

2.访问(可以倒序访问,倒数第一为L[-1],以此类推)

L[1] //1
L[-1]	//''

3.修改

(1)增

L.append('Yue')	//[1,True,'ad','','Yue'],将元素'Yue'添加到最后
L.insert(0,3)	//[3,1,True,'ad',''],将元素3查到下标0之前

(2)删

L.pop()	//返回'',删除并返回最后一个元素
L.pop(index)	//删除下标为index的元素并返回

(3)改

L[1] = 666	//[1,666,'ad',''],直接覆盖对应下标的值 

4.特点
(1)占用内存小,但是查找速度慢
(2)查找速度随着元素增加而逐渐下降

tuple

1.创建

t = ('Adam', 'Lisa', 'Bart')

tips:
当tuple内只有1个元素如t = (1)时会被python解释器当成括号1而计算结果为1,为了避免这种歧义只有一个元素时写成t = (1,)

2.访问

t[0]	//返回'Adam' 

3.修改

t[0] = 'Paul'	//tuple一旦创建就不能改变,赋值为别的元素会报错TypeError: 'tuple' object does not support item assignment

4."可变"的tuple

尽管tuple自身不能改变但我们可以在tuple里嵌List来变成"可变"的tuple
如:

t = ('a','b',['A','B']),
L = t[2]
L[0] = 'X'
L[1] = 'Y'

 >>>tuple变为('a','b',['X','Y'])

tuple所谓"不变"是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

dict(key => value,存储的数据没有顺序)

1.创建

d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}

tips: len()可以计算dict,List,tuple的大小

2.访问

d['Adam']	//返回95 

tips:访问的key可能不存在会报错KeyError,因此可以通过2中方法解决
(1)if-in判断

if 'Paul' in d:
  print d['Paul']

(2)get方法

d.get('Bart')	//59
d.get('Paul')	//None

3.更新

d['Adam'] = 70 

4.遍历

for key in d:
    print key ,': ',d[key]

4.特点
(1)查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样
(2)占用内存大,还会浪费很多内容
(3)作为 key 的元素必须不可变

set(元素没有重复,而且是无序的,且只存储key不存储value)

1.创建:调用 set() 并传入一个 list

s = set(['A', 'B', 'C', 'C'])	//输出['A', 'B', 'C'],因为set会自动去掉重复的元素 

2.访问

set存储的是无序集合,所以我们没法通过索引来访问,所以使用in操作符判断元素是否在set中

'Bart' in s

3.遍历

for name in s:
    print name  

4.更新

(1)添加

s = set([1, 2, 3])
s.add(4) 

tips:加入重复的元素不会报错但也不会加进去,如s.add(3)的话s不变;

(2)删除

s.remove(4)

tips:删除不存在的元素会报错

条件语句:

1.if语句

age = 30
if age >= 20:
    print 1
    print 2

tips:if语句中缩进相同的语句才在同一个代码块中,因此上述例子print 1和print 2都只在age >= 20时才输出

2.if-else语句

if score >= 60:
    print 'passed'
else:
    print 'failed'

3.if-elif-else语句

if score >= 90:
    print 'excellent'
elif score >= 80:
    print 'good'
elif score >= 60:
    print 'passed'
else:
    print 'failed'


循环语句

1.for循环

L = [75, 92, 59, 68]
for key in L:
    print key 

2.while循环

x = 1
while x < 100:
    x = x + 1

切片(slice)

L = ['Adam', 'Lisa', 'Bart', 'Paul']

(1)用法

L[index:num]	//表示从下标index开始取num个元素,index为0时可简写为L[:num]

例如前三个: L[0:3]或L[:3]
而L[:]则表示从头取到尾,实际上复制了一份List

(2)指定第三个参数
L[::2]表示每2个元素取一个数即隔一个取一个,得到['Adam','Bart']

(3)也可对tuple切片,只是切片结果为tuple

(4)倒序切片

L[-2:]	//['Bart','Paul']

  

迭代
task:
打印
0 - Adam
1 - Lisa
2 - Bart
3 - Paul

L = ['Adam', 'Lisa', 'Bart', 'Paul']

for index,name in enumerate(L):
    print index, ' - ',name 

enumerate函数的作用:把['Adam', 'Lisa', 'Bart', 'Paul']变成了类似[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]的tuple

zip()可以把2个list变成一个list

zip([10, 20, 30], ['A', 'B', 'C'])	//[(10, 'A'), (20, 'B'), (30, 'C')]

用for-in循环只能取出dict的key值,要使用values()或itervalues()方法才能取到value值。两者的区别是values()方法实际上将dict转换为了包含value的list而itervalues()不会,它从迭代过程中依次取出value,因此比values()方法节省内存

items(): 将dict对象转换为包含tuple的list
如: d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
则 d.items()返回[('Lisa', 85), ('Adam', 95), ('Bart', 59)]

iteritems(): 与values()和itervalues()类似,它也是不把dict转换成list,而是在迭代过程中不断给出tuple

原文地址:https://www.cnblogs.com/yuehenying/p/7976944.html