列表
列表:一个值,包含多个字构成的序列,用[ ]括起来,[]是一个空列表,不包含任何值,类似于空字符串,负数下标表示从后边开始,-1表示列表最后一个下标,它是一种可变的数据类型,值可以添加、删除或改变;
+用于连接两个列表并得到一个新列表;*用于一个列表和一个整数,实现列表的复制;del将删除列表中下标处的值;in、not in用于确定一个值是否在列表中;
多重赋值技巧:变量数目和列表长度必须严格相等,eg;
cat = ['fat', 'black', 'loud']
size, color, disposition = cat
sort()方法对列表中排序时需注意的3件事:
sort()方法当场对列表排序;
不能对既有数字又有字符串值的列表排序;
对字符串排序时,使用"ASCII 字符顺序";
sort()和sorted()方法的比较:sort(key = None, reverse = False)就地改变列表,sorted(iterable, key = None, reverse = False)返回新的列表,对所有可迭代对象均有效;
supplies = ['pens', 'staplers', 'flame-throwers', 'binders'] supplies.sort() print(supplies) supplies = ['pens', 'staplers', 'flame-throwers', 'binders'] sortedSupplies = sorted(supplies) print(supplies) print(sortedSupplies)
\:续行字符;
元组:使用( ),和字符串一样是不可变的,值不能被修改、添加或删除;
序列与元组的转换:list()将元组转换为序列,tuple()将序列转换为元组;
#序列转元组
pets = ['K', 'M', 'N']
print(tuple(pets))
#元组转序列
pets = ('K', 'M', 'N')
print(list(pets))
列表的引用:列表赋给一个变量时,不直接保存到变量,而是将列表的“引用”赋给了该变量,所以当改变变量的值时,原列表的值也要随着改变;
>>> spam = [0, 1, 2, 4, 5]
>>> chees = spam
>>> cheese[1] = 'Hello'
>>> spam
[0, 'Hello', 2, 4, 5]
>>> cheese
[0, 'Hello', 2, 4, 5]
字典和结构化数据
- 字典:
{key:value}
; - 字典与列表:列表是有序的,而字典是无序的,因此字典不可像列表一样切片;
-
keys()
、values()
、items()
:分别对应于字典的键、值和键-值对; -
get(要取得其值的键, 键不存在时返回的备用值)
:
>>> picnicItems = {'apples':5, 'cpus':2} >>> 'I am bringing ' + str(picnicItems.get('cups', 0) + ' cups.' I am bringing 2 cups. >>> 'I an bringing ' + str(picnicItems.get('eggs', 0) + ' cups.' I am bringing 0 eggs.
-
setdefault(要检查的键, 检查的键不存在时设置的值)
:第一次调用之后即存在,再次调用不会改变第一次赋给的键值;
>>> spam = {'name':'Pooka', 'age':5} >>> spam.setdefault('color', 'black') 'black' >>> spam {'color':'black', 'age':5, 'name':'Pooka'} >>> spam.setdefault('color', 'white') 'black' >>> spam {'color':'black', 'age':5, 'name':'Pooka'}
- 集合:无序、不重复的数据组合,主要作用为:
- 去重, 把一个列表变成集合,就自动去重了;
- 关系测试,测试两组数据之前的交集、差集、并集等关系;
- 格式输出:
pprint()
和pformat()
;
import pprint info = {'name':'K', 'age': 23} pprint.pprint(info) #下列这句和上句结果相同 #print(pprint.pformat(info))
- 嵌套的字典和列表
#嵌套的字典和列表 allGuests = {'Alice':{'apple':4, 'pretzels':19}, 'Bob':{'apple':3, 'sandwiches':4}, 'Carol':{'cups':5, 'apple pies':4}} def totalBrought(guests, item): numberBrought = 0; for k, v in guests.items(): numberBrought += v.get(item, 0) return numberBrought print('Apple = ' + str(totalBrought(allGuests, 'apple')))
字符串操作
字符串既可以用单引号,也可以用双引号开始和结束;
转义字符:\;
原始字符串:在字符串开始的引号前加上r,原始字符串完全忽略所有的转义字符,打印出字符串中所有的倒斜杠;
>>> print(r'That is Carol\'s cat.')
That is Carol\'s cat.
多行字符串:多行字符串的起止是3个单引号或3个双引号,三重引号之间的所有引号、制表符或换行,都被认为是字符串的一部分,此时缩进规则不适用;
>>> print('''Dear Alice, Eve's cat has been arrested for catnapping, cat burglary, and extortion. Sincerely, Bob''') Dear Alice, Eve's cat has been arrested for catnapping, cat burglary, and extortion. Sincerely, Bob
- 文本对齐:左对齐
ljust()
,右对齐rjust()
,居中center()
; - 向计算机剪贴板发送或接受文本,需要用到
pyperclip
模块中的copy()
和paste()
函数; - 字符串的格式化