一、列表的一些操作

'''列表的操作'''
a = ['cat','dog','fish']
b = [1,4,9]

c = a[0]   #cat
c = a[:]   #['cat','dog','fish']
c = a * 2  #['cat','dog','fish','cat','dog','fish']
c = a + b  #['cat','dog','fish',1,4,9]
del a[0]   #注意语法
print(a)   #['dog', 'fish']
a.insert(0,'cat')  #返回值是None
print(a)   #['cat', 'dog', 'fish']
a.pop(1)   #不带索引默认删最后一个
print(a)   #['cat', 'fish']
a.append('snake')   #不能带索引,返回值是None
print(a)    #['cat', 'fish', 'snake']

b = a.index('cat') #返回匹配到的第一个值的索引
 
'''列表去重'''
a = ['cat','cat','fish']
b = set(a) #转成集合去重
c = [i for i in b] #去重后生成新列表
c = []
for i in b:
c.append(i) #等同于第一个c的语句
print(c)



 

 

二、列表循环

'''遍历列表'''
a = ['cat','dog','fish']

b = [i.title() for i in a]   #列表解析
print(b)

for i in a:        #遍历列表元素
    print(i)

for i in range(len(a)):      #遍历列表索引
    print(a[i])

for index,value in enumerate(a):    #enumerate返回索引及索引对应列表元素
    print(a[index],value)

for i in range(4):    #rang(4)等同于[0,1,2,3]
    print(i)

 

三、多重赋值

a = ['cat','dog','fish']
b,c,d = a        #多重赋值语句,变量数与列表元素数量相等
print(b,c,d)

 

四、random模块

'''random相关应用'''
import random
a = ['dog','cat','fish']

b = a[random.randint(0,len(a)-1)]     #randint必须传两个参数
print(b)

c = random.choice(a)         #等同于b的语句,更简便
print(c)

d = random.shuffle(a)        #随机调整列表顺序,直接作用于原列表,无返回,此处d = None
print(a)

 

五、增强赋值

'''增强的赋值操作'''
a = 'one string'
b = 5

b += 1  #b = b + 1(适用于字符串拼接)
b -= 1  #b = b - 1
b *= 1  #b = b * 1(适用于字符串)
b /= 1  #b = b / 1
b %= 1  #b = b % 1
b //= 2   #b = b // 1

 

六、排序

1.sort()对原列表排序,无返回值

2.不能对既有数值又有字符串的列表排序

3.sort()方法对字符串排序时,使用“ASCII 字符顺序”,而不是实际的字典顺序。这意味着大写字母排在小写字母前面

.sort(key=str.lower)

排序时使所有字母小写进行排序,不改变列表实际元素大小写

'''排序'''
a = ['cat','dog','fish']
a.sort()                #正向排序
a.sort(reverse=True)    #反向排序
a.sort(key=str.lower)   #忽略大小写排序
b = sorted(a)           #排序后返回新的列表
a.reverse()             #反向排序
b = reversed(a)         #反向排序后返回新的列表

 

七、序列数据类型

序列数据类型:列表,字符串,range()返回值,元组

共同适用于:按索引取值,切片,遍历,len(),in,not in 

 

八、元组

1.当元组只有一个值,需要在值后面加一个逗号,以表明是一个元组

 

九、类型转换

'''类型转换'''
a = ['cat','dog','fish']    #列表
b = ('cat','dog','fish')    #元组
c = 'dacacacdcd'            #字符串
d = 'ddadacacadc'           #字符串

a = list(b)          #元组转列表['cat', 'dog', 'fish']
b = tuple(a)         #列表转元组('cat', 'dog', 'fish')
c = list(c)          #字符串转列表['d', 'a', 'c', 'a', 'c', 'a', 'c', 'd', 'c', 'd']
d = tuple(d)         #字符串转元组('d', 'd', 'a', 'd', 'a', 'c', 'a', 'c', 'a', 'd', 'c')

print(a,b,c,d,sep='\n')   #打印多个变量换行

 

十、引用

id():显示值的内存地址

copy.copy(list or dict):复制列表或字典,实际是创建了新的值,区别于之前的原列表(字典),有独立的内存地址

copy.deepcopy(list or dict):当列表中包含列表,字典中包含字典,用这个

 

十一、习题

spam = ['apples', 'bananas', 'tofu', 'cats']
msg = ''
for index,value in enumerate(spam):
    if index != 3:
        msg = msg+ value+','
    else:
        msg = msg+'and '+value
print(msg)

 

import random
numberOfStreaks = 0
total = []
b = ''
for experimentNumber in range(100):
    # Code that creates a list of 100 'heads' or 'tails' values.
    for i in range(100):
        t = random.randint(0,1)
        if t == 0:
            total.append('T')
        else:
            total.append('F')

    # Code  that checks if there is a streak of 6 heads or tails in a row.
    for i in total:
        b += i

    c  = b.count("TTTTTT") + b.count("FFFFFF")
    numberOfStreaks = numberOfStreaks + c
numberOfStreaks = numberOfStreaks / 10000
print(total)
print('Chance of streak: %s%%' % (numberOfStreaks / 100))   #%s字符串占位,%%转义百分号