Python学习数据结构、输入输出、文件对象

1、列表,Python中列表可以修改,而字符串和元组不能。

#列表的一部分方法
>>> list1 = [11,55,21,1,85,33,66]
>>> list1.append(10)
>>> list1
[11, 55, 21, 1, 85, 33, 66, 10]
>>> list1.extend([100,200,300])
>>> print("extend([100,200,300])",list1)
extend([100,200,300]) [11, 55, 21, 1, 85, 33, 66, 10, 100, 200, 300]
>>> list1.remove(1)
>>> print("remove(1):",list1)
remove(1): [11, 55, 21, 85, 33, 66, 10, 100, 200, 300]
>>> list1.pop(8)
200
>>> print("list1.pop(8):",list1)
list1.pop(8): [11, 55, 21, 85, 33, 66, 10, 100, 300]
>>> list1.index(10)
6
>>> list1.count(10)
1
>>> list1[0:8:2]
[11, 21, 33, 10]
>>> list1.clear()
>>> list1
[]

2、将列表当做堆使用(先进后出),将列表当做队列使用(先进先出),主要是演示列表的使用方法

#将列表当堆使用
>>> list1 = [11, 55, 21, 85, 33, 66, 10, 100, 300]
>>> list1.append(20)
>>> list1.append(9999)
>>> list1
[11, 55, 21, 85, 33, 66, 10, 100, 300, 20, 9999]
>>> list1.pop()
9999
>>> list1.pop()
20
>>> list1
[11, 55, 21, 85, 33, 66, 10, 100, 300]
>>> 

#将列表当做队列使用,(效率不高,涉及到元素的移动,当列表的元素很多时,耗时)
>>> list1
[11, 55, 21, 85, 33, 66, 10, 100, 300]
>>> list1 = [11, 55, 21, 85, 33, 66]
>>> list1.append(8888)
>>> list1.pop(0)
11
>>> list1.pop(0)
55
>>> list1.append(1000)
>>> list1
[21, 85, 33, 66, 8888, 1000]
>>> 

3、列表推导式,列表推导式提供了从序列创建列表的简单途径,其实将表达式简化成一行

#简单片段
 >>> list1 = [1,2,3]
>>> [3 * x for x in list1]
[3, 6, 9]
>>>
#简单打印9*9乘法口诀的值
>>> [i * j for i in range(1, 10) for j in range(1, i+ 1)]
[1, 2, 4, 3, 6, 9, 4, 8, 12, 16, 5, 10, 15, 20, 25, 6, 12, 18, 24, 30, 36, 7, 14, 21, 28, 35, 42, 49, 8, 16, 24, 32, 40, 48, 56, 64, 9, 18, 27, 36, 45, 54, 63, 72, 81]
>>> 
#将3*4的矩阵修改为3*4的矩阵
>>> list2 = [[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
>>>> [[row[i] for row in list2] for i in range(3)]
[[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]]

4、集合,集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素。
可以用大括号({})创建集合

>>> set1 = set('safafafsafsafg')
>>> set2= set('safs1a212asfa1f2')
>>> set1 - set2
{'g'}
>>> set1 | set2                #在set1或者在set2中
{'f', 'g', '1', '2', 'a', 's'}
>>> set1 ^ set2                #在set1中或在set2中,但不同时在两者
{'g', '2', '1'}
>>> set1 & set2                #既在set1中也在set2中
{'f', 's', 'a'}
>>> set2                       #去除重复的元素
{'f', '1', '2', 'a', 's'}
>>> 

5、遍历

#构造函数 dict() 直接从键值对元组列表中构建字典  遍历字典的键值对
>>> dict1 = dict([("name","apple"),("color","red"),("price",800)])
>>> dict1
{'name': 'apple', 'color': 'red', 'price': 800}
>>> for key,value in dict1.items():
    print(key,"->",value)

name -> apple
color -> red
price -> 800
>>> 
#enumerate()内建函数遍历列表
>>> list1 = list(range(5))
>>> for index ,value in enumerate(list1):
         print(index,"->",value)


0 -> 0
1 -> 1
2 -> 2
3 -> 3
4 -> 4
>>> 
#利用reversed()反序遍历列表,注意:::reversed()不该原值
>>> list1 = list(range(5))
>>> for index ,value in enumerate(reversed(list1)):
         print(index,"->",value)

0 -> 4
1 -> 3
2 -> 2
3 -> 1
4 -> 0
>>> list1
[0, 1, 2, 3, 4]
>>> 

6、输出格式化
format() 函数括号及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换

>>> print('{} --->{}'.format("wang", "yun"))
wang --->yun
>>>> print('{boy} --->{girl}'.format(boy ="wang", girl ="yun"))
wang --->yun
>>> list1 = [1,2,3]
>>> dict1={"wang":"yun"}
>>> print("{}---{}".format(list2,dict1))
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]---{'wang': 'yun'}
>>> 

input() 函数从标准输入读入一行文本,默认的标准输入是键盘(默认输入的是字符串,如果需要数字的话(int(input(文本)))

>>> str = input("name:")
name:wang
>>> print("name is:", str)
name is: wang
>>> 

7、文件的读和写
open() 将会返回一个 file 对象,语法结构:open(file,model)
read(size)读取文件中的数据,这将读取一定数目的数据, 然后作为字符串或字节对象返回
tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数
seek()如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数,from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置

>>> f = open('/Users/wangyue/Desktop/wangyue.txt', "w")
>>> f.write("wwwwwww\nwwwwwwww8888888\nwwwwwwwww")
>>> f.close()
>>> f = open('/Users/wangyue/Desktop/wangyue.txt','r')
>>> f.read()
'wwwwwww\nwwwwwwww8888888\nwwwwwwwww' 
>>> f.close()
>>> f=open("/Users/wangyue/Desktop/wangyue.txt", "r")
>>> f.readline()   #读一行
'wwwwwww\n'
>>> f.readline(2)  #读取下一行的size为2的字符
'ww'
>>> f.readline(5)   #读取下一行的size为5的字符
'wwwww'
>>> f.readline()  #读取一行
'w8888888\n'
>>> 
>>> f.close()
>>> f= open("/Users/wangyue/Desktop/wangyue.txt","r")
>>> f.tell()
0
>>> f.seek(5,0)
5
>>> f.readline()
'ww\n'
>>> f.seek(0,0)   
0
>>> f.readline()
'wwwwwww\n'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值