一、将给定的字符串反转
//将每个单词反转,然后将所有字符反转,最后再合成新的单词
def reverse(str_list,start,end):
while start<end:
str_list[start],str_list[end] = str_list[end],str_list[start]
start += 1
end -= 1
setence = ' Hello,how are you? Fine. '
str_list = list(setence)
i=0
while i <len(str_list):
if str_list[i] != ' ':
start = i
end = start+1
while (end<len(str_list)) and str_list[end]!= ' ':
end += 1
reverse(str_list,start,end-1)
i=end
else:
i += 1
str_list.reverse()
print(str_list)
二、切片
切片[start:end:step] //大于start 小于end
li = list(range(10))
print(li[2:5]) //[3,,5]
print(li[:4] //[0,1,2,3]
print(li[5:]) //[6,7,8,9]
print(li[0:10:3]) //[0,3,6,9]
负值处理
print(li[5:-2]) //[5,6,7]
print(li[9:0:-1]) //[9,8,7,6,5,4,3,2,1]
print(li[9::-1]) //[9,8,7,6,5,4,3,2,1,0]
切片生成一个新的对象
print(li)
快速反转数组
re_li = li[::-1]
三、列表推导
生成一维数组
li = []
for i in range(10):
li.append(i)
li = [1]*10
生成前10个偶数
li = [i*2 for i in range(10)]
print (li)
二维数组赋值
错误做法
li_2d = [[0]*3] * 3
li_2d[0][0] = 100 //li_2d[0][0],[1][0],[2][0]都被修改为100,即为浅拷贝
正确做法
li_2d = [[0]* for i in range(3)]
快速生成十个数的列表
d = {x:x%2==0 for x in range(10)}
//输出{0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False}