Python语言入门-列表,元组,字典

列表(list)

[...] 表示列表(list)。

a = [10, 20, 30, 40]

多行记述的方式,最后一个逗号可省略。

colors = [
    'red',
    'green',
    'blue',
]

 

列表的元素类型可以不同。

a = [10, 'ABC']

 

列表的遍历用for。

a = [1, 2, 3, 4, 5]
for n in a:
    print n

[n] 代表下标。从0开始。

a = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
a1 = a[0]       # 第0个: 'A'
a2 = a[2]       # 第2个: 'C'

[n:m] 代表第 n个开始到 第m之前的一个(也就是 第m - 1个)元素。n 省略的话代表从0开始、m省略的话代表到结尾。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a1 = a[2:4]     # 第2个开始到第3个: [2, 3]
a2 = a[2:]      # 第2个开始到最后: [2, 3, 4, 5, 6, 7, 8, 9]
a3 = a[:4]      # 第0哥开始到第3个: [0, 1, 2, 3]

[n:m:s] 的s代表跳跃几个。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a1 = a[1:8:2]            # 第1个到第7个,每次跳跃2个: [1, 3, 5, 7]

n, m 为负数的时候,指的是从结尾数起。

a = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
a1 = a[-1]           # 最后的字符 'G'
a2 = a[-3:-1]        # 从最后开始数第3个到最后开始的第1个的字符: ['E', 'F']

+ 运算符代表列表的结合。

print [1, 2, 3] + [4, 5, 6]        #=> [1, 2, 3, 4, 5, 6]

len() 获取列表的元素个数。

print len([1, 2, 3])           #=> 3

 

列表的列表(列表嵌套)。

a = [[1, 2], [3, 4], [5, 6]]

for list in a:
    for n in list:
        print n,              #=> 1 2 3 4 5 6

 

元组(tuple)

(...) 用来表示元组(tuple)。元组的用法几乎与列表相同,内容不能修改和编辑。

a = (10, 20, 30, 40)

 

要素只有一个的情况,末尾要加上逗号(,),用来区分括号运算符。

a = (10)                # 不是元组,而是10本身
a = (10,)               # 具有一个元素的元组

 

元组的内容一旦建立就不可以修改。

a1 = [10, 20, 30, 40]
a2 = (10, 20, 30, 40)

a1[2] = 60              # 可以赋值
a2[2] = 60              # 会报错

 

通过 list() 可以转换元组为新的列表,通过 tuple() 把列表转为新的元组。

print list((1, 2, 3))     #=> [1, 2, 3]
print tuple([1, 2, 3])    #=> (1, 2, 3)

 

字典(dict)

{...} 符号来标记,字典(dict)是键值对的集合。

d = {'Yamada': 30, 'Suzuki': 40, 'Tanaka': 80}

 

要素的访问方法

d1 = d['Yamada']
d2 = d['Suzuki']
d3 = d['Tanaka']

 

获取所有元素的集合和键,值的集合。使用items()keys()valus()iteritems()

d = {'Yamada': 30, 'Suzuki': 40, 'Tanaka': 80}

for k, v in d.items():
    print k, v             # Tanaka 80, Yamada 30, Suzuki 40

for k in d.keys():
    print k, d[k]          # Suzuki 40, Yamada 30, Tanaka 80

for v in d.values():
    print v                # 80, 30, 40

for k, v in d.iteritems():
    print k, v             # Tanaka 80, Yamada 30, Suzuki 40

 

列表函数(map(), filter(), reduce())

map() 功能是列表的各个元素逐个处理,把处理结果返回。

下面是把所有元素*2的处理。

a = [1, 2, 3]

def double(x): return x * 2
print map(double, a)                #=> [2, 4, 6] : 函数方式
print map(lambda x: x * 2, a)       #=> [2, 4, 6] : lambda方式
print [x * 2 for x in a]            #=> [2, 4, 6] : 内包方式【后述】

filter() 对列表内容逐个处理,处理结果为真的话就保留。下面的处理是返回奇数。

a = [1, 2, 3]

def isodd(x): return x % 2
print filter(isodd, a)              #=> [1, 3] : 函数方式
print filter(lambda x: x % 2, a)    #=> [1, 3] : lambda方式
print [x for x in a if x % 2]       #=> [1, 3] : 内包方式【后述】

reduce() 是先处理前两个元素,再把结果和下一个元素做处理,以此类推。返回单一的结果。下面的处理是计算合计。

a = [1, 2, 3, 4, 5]

def add(x, y): return x + y
print reduce(add, a)                #=> 15 : 函数方式
print reduce(lambda x, y: x + y, a) #=> 15 : lambda方式

 

列表内包记法

列表内包记法 是指不用map(), filter(), lambda就能进行一些简单的列表处理。

a = [1, 2, 3]
print [x * 2 for x in a]                        #=> [2, 4, 6]
print [x * 2 for x in a if x == 3]              #=> [6]
print [[x, x * 2] for x in a]                   #=> [[1, 2], [2, 4], [3, 6]]
print [(x, x * 2) for x in a]                   #=> [(1, 2), (2, 4), (3, 6)]

b = [4, 5, 6]
print [x * y for x in a for y in b]             #=> [4, 5, 6, 8, 10, 12, 12, 15, 18]
print [a[i] * b[i] for i in range(len(a))]      #=> [4, 10, 18]

 

集合(set)

集合(set)可以理解为没有重复元素的列表。集合之间可以进行减、OR、AND、XOR等操作。

a = set(['red', 'blue', 'green'])
b = set(['green', 'yellow', 'white'])

print a                #=> set(['red', 'blue', 'green'])
print b                #=> set(['green', 'yellow', 'white'])
print a - b            #=> set(['red', 'blue'])
print a | b            #=> set(['red', 'blue', 'green', 'yellow', 'white'])
print a & b            #=> set(['green'])
print a ^ b            #=> set(['red', 'blue', 'yellow', 'white'])
print 'green' in a     #=> True
a.add('black')
print a                #=> set(['red', 'blue', 'green', 'black'])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值