第十一章:
可变循环
newStars = int(input("how many stars do you want?")) for i in range(newStars): print("*") #输出: #how many stars do you want? 3 #* #* #*
可变嵌套循环
newline = int(input("how many lines do you want?")) newStars = int(input("how many stars do you want?")) for j in range(newline): for i in range(newStars): print(\'*\')
长代码行:用反斜杠(\)或者加小括号()
lines = \'a\'+\'b\'+ \ \'c\' + \'d\' +\ \'e\' + \'f\' lines = (\'a\'+\'b\'+ \'c\' + \'d\' + \'e\' + \'f\')
十二章:列表
创建一个空列表
newList = []
向空列表里追加内容:
调用函数.append()
newList = [] newList.append(\'abc\') print(newList)
向列表追加元素之前,必须现有列表,追加的元素在列表最末尾
列表里的元素类型可以是多样的,包括数字,字符串,对象,其他列表
列表有点像是c中的数组
查找列表中的元素:
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] print(newList[3]) #输出为:’d\'
列表分片:
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] print(newList[1:4])
#[\'b\', \'c\', \'d\']
输出还是一个列表,列表包含下界不包含上界,和range()一样,而上面查找输出的是字符
分片简写;
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] print(newList[1:]) #[\'b\', \'c\', \'d\', \'e\', \'f\'] 输出从第二个到结尾
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] print(newList[:4]) #[\'a\', \'b\', \'c\', \'d\'] 从第一个到第四个 newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] print(newList[:]) #[\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'] 输出整个列表
向列表增加元素的其它方法:
append()只在末尾增加一个元素;
extend()如下:
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] newList.extend([\'g\',\'h\',\'i\']) print(newList)
insert():
这时append()添加了一个列表[\'f\',\'g\',\'h\']而不是在原列表里添加三个字符。
删除列表元素:
remove()、del、pop()
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] newList.remove(\'a\') print(newList)
remove()不需要知道元素具体位置,只要知道元素存在即可
del允许利用索引从列表删除元素:
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\']del newList[3] print(newList)
pop()从列表 取出 最后一个 元素交给你。这说明你可以为它指派一个名字:
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] new = newList.pop() print(new)
也可以指定列表中的一个元素取出:
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] new = newList.pop(3) print(new)
搜索列表
in关键字:
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] if \'a\' in newList: print(\'exist\')
\'a\' in newList 是一个boole表达式,会返回ture或false:
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] \'a\' in newList
# \'a\'在列表返回ture
# 不在列表里的返回false
查找索引:
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] print(newList.index(\'d\'))
#输出‘d\'在列表中的索引 3
如果列表中没有这个值,index()会给出一个错误,所以最好结合in使用:
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] if \'d\' in newList: print(newList.index(\'d\'))
循环处理列表:
newList=[\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'] for i in newList: print(i)
列表排序
使用sort()方法:
newList=[\'b\',\'a\',\'c\',\'f\',\'d\',\'e\'] newList.sort() print(newList)
sort()方法会自动按照字母顺序排序,如果是 数字会按照从小到大排序
sort()会修改原列表,而不是创建一个新的列表
按逆序排序:
1:先正序排好,然后对这个列表逆置(reverse)
newList=[\'b\',\'a\',\'c\',\'f\',\'d\',\'e\'] newList.sort() newList.reverse() print(newList)
2:向sort()增加一个参数,直接让它按降序排序(从大到小)
newList=[\'b\',\'a\',\'c\',\'f\',\'d\',\'e\'] newList.sort(reverse = 1) #原书中为reverse = Ture,但是编译器报错,说Ture未定义 print(newList)
刚才的排序和逆置都是对原来的列表修改,如果想保留原来的列表,可以用分片记法建立副本
newList=[\'b\',\'a\',\'c\',\'f\',\'d\',\'e\'] new = newList[:] new.sort(reverse = 1) print(new)
另一种排序方法:
sorted(),可以得到一个列表的有序副本而不会影响原列表顺序
newList=[\'b\',\'a\',\'c\',\'f\',\'d\',\'e\']
new = sorted(newList)
print(newList)
print(new)
可改变和不可改变:
在python中数字和字符串是不可改变的,而列表是可改变的。
有些情况下你可能不希望列表可以改变。
有一个名为元组(tuple)的类型,这就属于不可改变的列表:
my_tuple = (\'a\',\'b\',\'c\')
这里使用了圆括号,而不是中括号。
由于元组不可改变,所以不能对元组进行排序、追加、删除
一旦元组创建,它就会一直保持不变
双重列表:数据表
类似于c中的二维数组
一种建立双重列表的方法:
a = [12,23,232,44] b = [1234,3434,4,6] c = [121,222,333,444] d = [a,b,c] for i in d: print(i)
也可以直接创建d
d = [[12,23,232,44],[1234,3434,4,6],[121,222,333,444]] for i in d: print(i)
从表中获取一个值:
d = [[12,23,232,44],[1234,3434,4,6],[121,222,333,444]] print(d[0][3])