Python(四)切片、列表推导

xiaoxiao2021-02-28  12

一、将给定的字符串反转 //将每个单词反转,然后将所有字符反转,最后再合成新的单词

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}
转载请注明原文地址: https://www.6miu.com/read-1900366.html

最新回复(0)