t1 = [2,3,4] # 使用中括号创建list
t2 = list(t1) # 使用list()函数创建list, 用另一个序列初始化
t3 = [t1, t2] # t3 is a list of two lists
t4 = [*t1, 5] # use scatter to unfold t1, and then used to form t4
t5 = list('use a string to create a list') # 使用字符串初始化list
t6 = [4, 'string', 4.5, t1] # list中的元素可以是不同的数据类型
print('t1 : ', t1)
print('t2 : ', t2)
print('t3 : ', t3)
print('t4 : ', t4)
print('t5 : ', t5)
print('t6 : ', t6)
# 通过下标访问元素
t1[0] = 0
print('t1 : ', t1)
# 使用 for 遍历list:
for x in t1: print(x)
# 使用 下标遍历 list
for i in range(len(t1)):
print( 't1[{0}] = {1}'.format(i, t1[i]) ) #使用了格式化输出{}中的数字使用format()中对应位置的参数替换
# 使用+号连接两个list
print('t1 + t2 : ', t1 + t2)
# 使用乘号*重复一个list
print('t1 * 3 : ' , t1 * 3 )
# 往列表末尾添加一个元素
t1.append(5)
print('t1 : ', t1)
#往列表里面添加另一个列表的所有元素(可以是自己)
t1.extend(t1)
print('t1 : ', t1)
# 对列表排序
t1.sort()
print('t1 : ', t1)
#删除列表里面的元素
t1.pop() # 删除最后的一个元素
del t1[0] # 删除下标为0的元素
print('t1 : ', t1)
del t1[1:3] # 删除下标为1,2的元素
print('t1 : ', t1)
t1.remove(4) #删除第一个元素值为4的元素
print('t1 : ', t1)
t = [0,1,2,3,4,5,6,7,8,9,10]
print('t[:3] = ', t[:3]) # 获取[0:3)范围的元素
print('t[3:] = ', t[3:]) # 获取从3开始的所有元素
print('t[3:-1] = ', t[3:-1]) # -1表示最后一个位置, -2表示倒数第2个位置, 依次类推
#使用步长获取固定步长的元素
print('t[ : :1] = ', t[ : : 1])
print('t[ : :2] = ', t[ : : 2])
print('t[ 1: -1 :3] = ', t[ 1: -1 : 3])
# 使用切片复制一个list
tt = t[ : ]
print('tt : ', tt)
# 切片可以作为左值使用
tt[3:8] = [0] # 用列表[0] 覆盖列表 tt[3:6]
print('tt : ', tt)
# 比如字符串类中就有与map作用类似的函数
s = 'abcdefg'
print(s.upper()) # 将s中的每一个元素都转换为大写字母
low = list(s);
print('low : ', low)
up = map(str.upper, low) # 第一个参数是一个函数, 第二个参数是一个list
print('up : ', up)
list_up = list(up)
print('list_up : ', list_up)
reduce(fun, lst) 第一个参数是一个函数, 第二个参数是一个可以迭代的序列
reduce将函数fun作用到lst的每个元素上并产生一个输出
from functools import reduce
# 举个栗子
lst = [1,2,3,4,5,6]
print('sum(lst) = ', sum(lst) ) # 这一步可以理解为add(add(add(add(add(1, 2), 3), 4), 5), 6)
# reduce 就是这样工作的
def myadd(a, b):
return a+b
result = reduce(myadd, lst)
print('result : ', result)
#再举一个栗子, 写一个函数判断一个数字是否是回文数
def is_palindrome1(n):
return str(n) == reduce(lambda x,y : y + x, str(n) )
def is_palindrome2(n):
return list(str(n)) == list(reversed(list(str(n))))
print(is_palindrome1(1234321))
print(is_palindrome2(1234321))
filer(fun, lst) 第一个参数是一个函数, 第二个参数是一个可以迭代的序列
filter将函数fun作用于lst的每一个元素, 并根据fun返回值是 Ture
还是False
决定保留还是丢弃该元素
使用 filter 也需要导入functools
模块
lst = [i for i in range(10)]
print(lst)
def is_odd(n):
return n % 2 == 1
print( list(filter(is_odd, lst)) ) # 过滤掉偶数
lst = list('this is a string')
print(lst)
def not_empty(s):
return s and s.strip()
print( list(filter(not_empty, lst)) )
列表生成式是一种简洁且高效的生成list对象的一种语法 看例子:
t1 = [ x**2 for x in range(10) ] # 生成0到4的平方,作为列表元素
print( t1 )
t2 = [ x for x in t1 if x % 2 ] # 当后面的if 条件为True时, 当前元素才会保留下来, 这里只保留了奇数
print( t2 )