python 列表

1、如何得到一个1-20的列表?

>>> range(1,21)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

2、判断一个列表,如果是整数,则加1;如果是字符串,则直接输出

a = [1,3,5,7,9,'love']
for i in a:
    if isinstance(i,int):
        print i + 1
    elif isinstance(i,str):
        print i
输出:
2
4
6
8
10
love

isinstance(object, classinfo) 解释:如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False
type() 可以用来判断函数类型,如:>>> type (isinstance) <type 'builtin_function_or_method'> 则说明是内建函数

3、拆分字符串,以列表的形式返回

a = 'welcome_to_beijing'
a.split('_')
['welcome', 'to', 'beijing']

与之相反的是:join

b = ['welcome', 'to', 'beijing']
'_'.join(b)
'welcome_to_beijing'

4、将元组转换为列表

a = (345,'bie','love',7)
list(a)
[345, 'bie', 'love', 7]

5、列表的切片和索引

a = [1,3,5,7,9]
a[0:4]
[1, 3, 5, 7]
a[:4]
[1, 3, 5, 7]
a[0:5]
[1, 3, 5, 7, 9]
a[0:]
[1, 3, 5, 7, 9]
a[:]
[1, 3, 5, 7, 9]
a[:5]
[1, 3, 5, 7, 9]
a[0:-1]
[1, 3, 5, 7]

1) 左边为0,可以省略,右边到头,可以省略 2) [:] 代表着整个列表 3) 最后的列表坐标可以从负数来算

索引示例

a
[1, 3, 5, 7, 9]
a[2]
5
a[3]
7
a[-1]
9

6、列表的增,删 append   extend   insert   + 的区别

a = [1,3,5,7,9]
b = [11,13]
a.append(b)
a
[1, 3, 5, 7, 9, [11, 13]]
a.extend(b)
a
[1, 3, 5, 7, 9, [11, 13], 11, 13]
a.insert(1,2)
a
[1, 2, 3, 5, 7, 9, [11, 13], 11, 13]
a = [1,3,5,7,9]
b = [11,13]
a + b
[1, 3, 5, 7, 9, 11, 13]

append:把整体添加进来 extend:把每一项添加进来 insert:坐标,元素内容 +:2个列表相加
del  remove pop 的区别

a = ['a','b','c','d']
a.pop(0)
'a'
a
['b', 'c', 'd']
a.remove('b')
a
['c', 'd']
del a
a
Traceback (most recent call last):
  Python Shell, prompt 62, line 1
NameError: name 'a' is not defined

修改列表

a = ['a','b','c','d']
a[1] = 'gg'
a
['a', 'gg', 'c', 'd']

查询列表:一般通过索引的方式去查询

7、去重复,巧用list(set(l))

a
['a', 'gg', 'c', 'd', 'c']
list(set(a))
['a', 'gg', 'c', 'd']

8、列表遍历的2种方式  

a = ['a', 'gg', 'c', 'd', 'c']

for index,item in enumerate(a):
    print index,item
输出
0 a
1 gg
2 c
3 d
4 c   
a = ['a', 'gg', 'c', 'd', 'c']

for item in a:
    print item
输出
a
gg
c
d
c

9、装逼神器:列表推导式(在循环遍历中把满足某个条件的项取出来)

1) 列出10以内的偶数,放到列表中

[i for i in range(1,11) if i%2 == 0]
[2, 4, 6, 8, 10]

2) 列出1-100能同时除以2和除以3的数

[i for i in range(1,101) if i%2 ==0 and i%3 == 0]
[6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96]

3) 将1-10的奇数平方,偶数减半

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[i*i if i%2 == 1 else i/2 for i in range(1,11)]
[1, 1, 9, 2, 25, 3, 49, 4, 81, 5]

4) 总结

格式1:[表达式 for xx in 序列 if 条件表达式]
格式2:[表达式 if 条件 else 表达式 for xx in 序列]

10、列表如何排序 ?

a = [1,8,6,9]
sorted(a)                      #生成新的列表排序
[1, 6, 8, 9]
a
[1, 8, 6, 9]
a.sort()                       #对原列表进行排序
a
[1, 6, 8, 9]