Python2笔记(三)—— 集合List和Tuple,Dict和Set类型

List

# -*- coding: utf-8 -*-
L = [1, 'a', "啥"]
print L
print L[0], L[1], L[2], L[-1], L[-2], L[-3]

结果:
[1, ‘a’, ‘\xe5\x95\xa5’]
1 a 啥 啥 a 1

向后添加append() 和指定位置插入insert():

# 向后插入
L.append([2])
print L
# 指定位置插入
L.insert(1, 'b')
print L

结果:
[1, ‘a’, ‘\xe5\x95\xa5’, [2]]
[1, ‘b’, ‘a’, ‘\xe5\x95\xa5’, [2]]

删除pop()和指定位置删除pop(index)

L.pop()
print L
L.pop(1)
print L

结果:
[1, ‘b’, ‘a’, ‘\xe5\x95\xa5’]
[1, ‘a’, ‘\xe5\x95\xa5’]

# -*- coding: utf-8 -*-
L = [1, 'a', [2, 4], 'b', 5]
print L[0:2]
# 默认从0开始
print L[:2]
# 从头到尾
print L[:]
# ::n 每隔N个取一个
print L[::2]
# 倒数
print L[-1]
# -n: 倒数n开始
print L[-2:]
# :-n 倒数n结束
print L[:-2]
print L[-4:-1:2]

结果:
[1, ‘a’]
[1, ‘a’]
[1, ‘a’, [2, 4], ‘b’, 5]
[1, [2, 4], 5]
5
[‘b’, 5]
[1, ‘a’, [2, 4]]
[‘a’, ‘b’]

tuple

tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。
创建tuple和创建list唯一不同之处是用( )替代了[ ]。

# -*- coding: utf-8 -*-
L = (1, 'a', "啥")
print L
print L[0], L[1], L[2], L[-1], L[-2], L[-3]
# L[0] = 2 # TypeError: 'tuple' object does not support item assignment
# print L

因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。

正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义;

# -*- coding: utf-8 -*-
L = (1, 'a', "啥", [2, 3])
print L
l = L[3]
l[1] = 'x'
print L

结果:
(1, ‘a’, ‘\xe5\x95\xa5’, [2, 3])
(1, ‘a’, ‘\xe5\x95\xa5’, [2, ‘x’])

Dict

# -*- coding: utf-8 -*-
fruit_price = {
    'apple': 10,
    'banner': 12,
    'orange': 15
}

# print fruit_price['egg'] # KeyError: 'egg'

if 'banner' in fruit_price:
    print fruit_price['banner']

print fruit_price.get('egg')

print '---'

fruit_price['orange'] = 16

for key in fruit_price:
    print fruit_price[key]

print '---'

for val in fruit_price.values():
    print val

print '---'

for val in fruit_price.itervalues():
    print val

print '---'

for key, val in fruit_price.items():
    print key, ':', val

结果:
12
None

16
12
10

16
12
10

16
12
10

orange : 16
banner : 12
apple : 10

values()itervalues()

  1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
  2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
  3. 打印 itervalues() 发现它返回一个 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。

Set

# -*- coding: utf-8 -*-
s = set(['A', 'B', 'C', 'C'])
print s
print len(s)
# 区分大小写
print 'B' in s
print 'b' in s
# 遍历
for val in s:
    print val
# 添加
s.add(4)
print s
# 添加已存在
s.add('B')
print s
# 移除
s.remove('B')
print s
# 移除超出或不存在数据
# s.remove(3) # KeyError: 3
# print s

结果(会自动去重):
set([‘A’, ‘C’, ‘B’])
3
True
False
A
C
B
set([‘A’, ‘C’, ‘B’, 4])
set([‘A’, ‘C’, ‘B’, 4])
set([‘A’, ‘C’, 4])

生成集合range()

# -*- coding: utf-8 -*-
L = [x * x for x in range(1, 11)]
print L

fruit_price = {
    'apple': 10,
    'banner': 12,
    'orange': 15
}

tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in fruit_price.iteritems()]
print '<table>'
print '<tr><th>Name</th><th>Price</th><tr>'
print '\n'.join(tds)
print '</table>'

结果:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
<table>
<tr><th>Name</th><th>Score</th><tr>
<tr><td>orange</td><td>15</td></tr>
<tr><td>banner</td><td>12</td></tr>
<tr><td>apple</td><td>10</td></tr>
</table>

字符串可以通过 % 进行格式化,用指定的参数替代 %s。字符串的 join() 方法可以把一个 list 拼接成一个字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值