经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Ruby » 查看文章
day04_步入百万年薪的第四天
来源:cnblogs  作者:SupSnake  时间:2019/7/10 11:37:52  对本文有异议

day04

列表

列表——list

? 有序,可变,支持索引

  • 列表:存储数据,支持的数据类型很多:字符串,数字,布尔值,列表,集合,元组,字典,用逗号分割的是一个元素
  • id() :获取对象的内存地址
  1. lst = ['alex',123,True] # 用逗号分割的是一个元素
  2. print(lst) # 结果是['alex',123,True]
  3. print(lst[0])
  4. print(id(lst[0]))
  5. # id获取对象的内存地址
  6. lst[0] = "dsb"
  7. print(lst) # ['dsb', 123, True, '黑哥']
  8. # s = "alex" # 字符串是不可变数据
  9. # s = "wusir"
  10. # s[0] = "b"
  11. # print(s)
列表的增加
  • append():追加,在末尾的位置加一个
  1. # lst.append("大煎饼") #追加(在列表的最后位置添加一个内容)
  2. # print(lst)
  • insert():插入,insert(像插入的位置下标,'内容')插入到位置前面

insert()以后尽量不要使用(当数据量比较大的时候会影响效率)

  1. # lst.insert(2,"wusir") #插入 以后尽量不要使用(当数据量比较大的时候会影响效率)
  2. # print(lst)
  • extend(可迭代对象):扩展 ——迭代添加(数字和布尔值不能),把里面的内容一个一个的放在后面
  1. # lst.extend("可迭代的内容") # 迭代添加
  2. # print(lst)
列表的删除
  • del (不是列表的专属方法) :可以配合索引删除,可以配合切片和步长删除,可以强制删除空间
  1. # del lst[0] # 通过索引删除
  2. # print(lst)
  3. # del lst[0:3] # 通过切片删除
  4. # print(lst)
  5. # del lst[0:3:2] # 通过步长删除
  6. # print(lst)
  • remove():通过元素名字删除,删除左边第一个
  1. # lst = ["dsb",123,"dsb",True,"黑哥"]
  2. # lst.remove("dsb") # 移除 -- 通过元素名字进行删除
  3. # print(lst)
  • pop():没有指定,默认删除最后一个

pop(0):可以指定索引删除

ret = lst.pop(0) :可以返回被删除的元素

  1. # lst.pop() # 弹 -- 默认删除最后一个
  2. # print(lst)
  3. # lst = ["dsb",123,True,"黑哥"]
  4. # lst.pop(2) # 通过指定索引进行删除
  5. # print(lst)
  • clear():清空 结果是一个空列表 :[]
  1. # lst.clear() #清空
  2. # print(lst)
列表的改
  • 通过索引修改
  • 可通过切片:被迭代进来的,可超出切片的数量,数字和布尔值不行,主要是索引取得留下谁 :123456(不能运行) 1,2,3,4,5,6(可运行) "123456"(可运行)
  • 可通过切片和步长:后面的内容数量必须与切片的数量相等
  1. lst = ['杨紫','高圆圆''刘亦菲','关晓彤']
  2. lst[0] = '杨幂' # 通过索引修改
  3. print(lst) *****
  4. lst[0:3] = '你好美11111111' # 被迭代进来的,数字和布尔值不行,主要是索引取得留下谁 :123456(不能运行) 1,2,3,4,5,6(可运行行) "123456"(可运行)
  5. print(lst) # ['你','好','美',’1',....,'1','关晓彤']
  6. lst[0:4:2] = '好嗨哦' # 运行错误
  7. lst[0:4:2] = '好嗨' #后面的内容数量必须与切片的数量相等
  8. print(lst) # ['好','杨紫','嗨','刘亦菲']
列表的查
  • 通过for循环
  1. # for 循环
  2. # lst = ["dsb",123,"dsb",True,"黑哥"]
  3. # for i in lst:
  4. # print(i)
增删改查的使用
  1. lst = ['你', '好', '啦', '啊']
  2. lst.append('牛')
  3. print(lst)
  4. lst.insert(1, '牛一')
  5. print(lst)
  6. lst.extend('你好')
  7. print(lst)
  8. lst.pop(1)
  9. print(lst)
  10. lst.remove('牛')
  11. print(lst)
  12. lst1 = ['asd', 'dfg']
  13. lst1.clear()
  14. print(lst1)
  15. lst[4] = '朱'
  16. print(lst)
  17. lst[0:4] = '12'
  18. print(lst)
  19. lst[0::2] = '36'
  20. print(lst)
  21. for i in lst:
  22. print(i)
列表的嵌套

通过索引进行取值

不管什么类型进行切片的时候获取到的都是原数据类型

  1. # a = lst[-1][-1][-2]
  2. # print(a)
  3. # 不管什么类型进行切片的时候获取都到都是源数据类型
  4. # lst = [1,"alex","春生","小东北","渣弟",
  5. # ["大黑哥",["常鑫",["自行车"],"大煎饼","掉井盖","三金"],
  6. # "冯强","海峰",["太白金星","女神","吴超",["肖锋"]]]]
  7. # print(lst[-1][1][1][0])

元组

元组——tuple

有序,不可变,支持索引

元组(tuple)其实就是一个不可以修改的列表

元组的查

for语句查

也可以用索引,可以用切片,也可以加步长,元组切片结果也是元组

元组不能进行修改,不可变

应用场景

元组用于存储一些比较重要的信息,元组在配置文件中会使用,存放一些用户密码的时候

常量也是在配置文件中使用

修改——一般不推荐

转成列表再进行修改

  1. # tu = (1,"alex",True,"大黑哥",[1,2,3])
  2. # lst = [1,"alex",True,"大黑哥",[1,2,3]]
  3. # print(tu)
  4. # tu = (1,"alex",True,"大黑哥",[1,2,3])
  5. # print(tu[0:6])
  6. # for 循环
  7. # for i in tu:
  8. # print(i)

range

range——范围

print(list(range(0,10))) 顾头不顾尾

面试题

python3中range(0,10) 是一个可迭代的对象,写得是怎样的打印的时候就是怎样 :print(range(0,10)) # 结果是 range(0,10)

  1. print(list(range(0,10)))# 结果是[0,1,2,3,4,5,6,7,8,9]

python2中 的 range 获取到一个列表

  1. range(0,10) # 结果是[0,1,2,3,4,5,6,7,8,9]

xrange和python3中range是相似的,都是可迭代对象,返回结果是 range(0,10)

range 和切片一样:range 第一个是起始位置,第二个是终止位置,第三个是步长,步长默认为1,终止位置和切片一样都是顾头不顾尾,他们之间用逗号分开

  1. print(list(range(1,10,3))) # 结果是 [1,4,7]
  2. print(list(range(10,-2,-1))) # 结果是 [10,...,-1]
  3. print(list(range(10))) # 结果是 [0,1,...,9]

作用:range #可以让for循环数字

  1. for i in range(55):
  2. print(i) # 结果是打印 1到54
  3. for i in range(100, 0, -1):
  4. print(i)
  5. # 使用for循环和range 打印 100 ~ 1
  6. # for i in range(100,0,-1):
  7. # print(i)
  8. # for i in range(1,101,2):
  9. # print(i)
  10. # for i in range(0,101,2):
  11. # print(i)
  12. # for i in range(0,101,6):
  13. # print(i)

range 不能和while一起使用

  1. # 错误示例:
  2. # while range(0,10):
  3. # print(1)
while和for的比较
  1. # lst = []
  2. # flage = True
  3. # while flage:
  4. # name = input("请输姓名:")
  5. # lst.append(name)
  6. # if len(lst) == 3:
  7. # flage = False
  8. # print(lst)
  9. # lst = []
  10. # for i in range(3):
  11. # lst.append(input("请输入姓名:"))
  12. # print(lst)

原文链接:http://www.cnblogs.com/NiceSnake/p/11157977.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号