linux元组和列表的区别,列表,元组,集合

一 列表

列表是可变类型的序列,而元组与字符串是不可变类型的序列

1.列表的定义:

# 定义一个空列表

In [21]: list = []

In [22]: type(list)# 通过python的内置函数type查看list的数据类型

Out[22]: list

In [23]: print list

[]

# 定义一个包含元素的列表,元素可以是任意类型,包括数值类型,列表,字符串等均可。

In [24]: list1 = ["fentiao","5","male"] 此处定义一列表,名为list1

In [25]: print list1

['fentiao', '5', 'male']

2. 列表的修改

修改列表的元素:直接重新赋值;.

此处我查看下标为1元素的值,重新给这个索引赋值,我们发现列表的元素是可变的;

In [36]: list1

Out[36]: ['fendai', 4, 'female']

In [37]: list1[1]

Out[37]: 4

In [38]: list1[1]=7

In [39]: list1

Out[39]: ['fendai', 7, 'female']

In [16]: list1 = ["fentiao","5","male"]

In [17]: list1[0] = "hello"

In [18]: print list1

['hello', '5', 'male']

列表的修改

>>> list1

['fentiao', 5, 'male', 'cat']

>>> id(list1)

140205776057408

>>> list1[0] = "fendai"

>>> id(list1)

140205776057408

列表的操作:理解"对象=属性+方法"与类

3.列表的索引和切片

# 列表的索引:下标是从0开始计算,比如list[0]读取的是列表的第1个元素;

list[-1]读取的是列表的倒数第1个元素;

In [39]: list1

Out[39]: ['fendai', 7, 'female']

In [40]: list1[0]

Out[40]: 'fendai'

In [41]: list1[-1]

Out[41]: 'female'

# 列表的切片

>>> list1[:]            //通过切片的方式可以实现列表的复制

['fentiao', 5, 'male']

# 0代表从哪个索引开始切片,3代表切片到哪个位置,并且不包含第三个索引,2代表切片的步长;

>>> list1[0:3:2]

['fentiao', 'male']

In [42]: list1[:]

Out[42]: ['fendai', 7, 'female']

In [43]: list1[1:]

Out[43]: [7, 'female']

In [44]: list1[:2]

Out[44]: ['fendai', 7]

4.列表的添加:

列表可通过append方法添加元素;

In [45]: list1.

list1.append   list1.extend   list1.insert   list1.remove   list1.sort

list1.count    list1.index    list1.pop      list1.reverse

In [45]: list1.append("cat")#####在列表的末尾添加

In [46]: list1

Out[46]: ['fendai', 7, 'female', 'cat']

In [48]: help(list1.append)   ####查看list1.append的使用方法;

列表的长度:

In [51]: len(list1)  #####查看列表的长度

Out[51]: 4

In [52]: list1

Out[52]: ['fendai', 7, 'female', 'cat']

列表可通过方法添加元素;

截图:

98225d6413ecff766138a7f93155961d.png

In [16]: list.extend('hel')

In [17]: list

Out[17]: ['qqqqqq', 'fentiao', '5', 'male', 'hello', 'h', 'e', 'l']

在指定位置添加元素使用inert方法;L.insert(index, object)

截图:

67dfbd8cc646aeb172cfbb2bc24c5ff6.png

5.列表的删除:

方法一:

In [19]: list1 = ["fentiao","5","male"]

In [20]: list1.remove("fentiao")

In [21]: list1

Out[21]: ['5', 'male']

方法二:

In [22]: list1 = ["fentiao","5","male"]

In [23]:  list1.remove(list1[2])

In [24]: list1

Out[24]: ['fentiao', '5']

方法三:

In [25]: list1 = ["fentiao","5","male"]

In [26]:  del(list1[1])

In [27]: list1

Out[27]: ['fentiao', 'male']

6.列表元素的查找:var in list

判断一个var元素是不是属于list列表:

var in list   ####元素属于列表

var not in list  ####元素属于列表

In [1]: list=['fentiao','5','male']

In [2]: 'fentiao' in list   ####'fentiao'元素属于列表

Out[2]: True

In [3]: 'fentiao' not in list  ####'fentiao'元素不属于列表

Out[3]: False

7.重复、连接及计算长度

In [4]: list =[1,2,3]+[5,6,7]  ######连接

In [5]: list

Out[5]: [1, 2, 3, 5, 6, 7]

In [6]: list1=list*3     #####重复

In [7]: list1

Out[7]: [1, 2, 3, 5, 6, 7, 1, 2, 3, 5, 6, 7, 1, 2, 3, 5, 6, 7]

In [8]: len(list1)  ##########计算长度

Out[8]: 18

练习

(1)打印1-100中所有的偶数 打印1-100中所有的奇数

In [8]: range (2,100,2)

In [9]: range (1,100,2)

(2)控制出栈,入栈

代码:

stack = []

def pushstack():

item = raw_input('new item:')

stack.append(item)

def  popstack():

if len(stack)== 0:

print "can not pop fromempty item"

else:

print "%s pop from stack"%stack .pop()

def viewstack():

print stack

def showmenu():

pro = '''

welcome to stackmanage

p(U)sh

P(O)p

(V)iew

(Q)uit

Enter choice:'''

while True:

choice =raw_input(pro).lower()

if choice =="u":

pushstack()

elif choice =="o":

popstack()

elif  choice == "v":

viewstack()

elif  choice == "q":

print "quit stackmanage"

break

else:

print "inputu,o,v,q"

showmenu()

运行结果图:

c6942c1c60c9bb5d87b5b02e7f591223.png

1f2b9870603fbb72a285b2cca4860bed.png

f8bdbfbd76e549bcd686e12ab2d82468.png

(3)break与continue区别:

截图:

51b4dd38edce02814b71d4922b3e3f10.png

二 元组tuple

1.元组的定义:

#定义空元组

tuple = ()

#定义单个值的元组

tuple = (fentiao,)

#一般的元组

tuple = (fentiao, 8, male)

#为什么需要元组?

>>> userinfo1 = "fentiao 4 male"

>>> userinfo2 = "westos 10 unknown"

>>> userinfo1[:7]

'fentiao'

>>> userinfo2[:6]

'westos'

字符串中操作提取姓名/年龄/性别的方式不方便,诞生元组与列表这两个数据类型

>>> t1 = ("fentiao",4,"male")

>>> t2 = ("westos", 10, "unknown")

>>> type(t1)

>>> type(t2)

>>> t1[0]

'fentiao'

>>> t2[0]

'westos'

>>> t2[0:2]

('westos', 10)

2.元组特性

(1)不能对元组的值任意更改

>>> t1

('fentiao', 4, 'male')

>>> t1[1] = 5

Traceback (most recent call last):

File "", line 1,in

TypeError: 'tuple' object does not support item assignment

(2)对元组分别赋值,引申对多个变量也可通过元组方式分别赋值

In [4]: a,b,c=(1,2,3)

In [5]:  print a,b,c

1 2 3

In [6]:  print a

1

In [7]:  print b

2

In [8]:  print c

3

注意:C语言中,定义一类型,必须先开辟一存储空间,当后期重新赋值时也一定是整型的;

python中,先在内存上存储数据后,再通过标签去引用。不同的字符串占用不同的存储空间。

>>> str1

'12345'

>>> id(str1)

140205776037520

>>> str1 = "abcde"

>>> id(str1)

140205776037424

>>> str2 = "12345"

>>> id(str2)

140205776037520

3.元组的操作

元组也属于序列,可执行的操作如下:

索引、切片、重复、连接和查看长度

In [9]: yuan = (1,2,3,4)

In [10]: type(yuan)   ####查看数据类型

Out[10]: tuple

In [11]: yuan[1]    ####索引

Out[11]: 2

In [14]: yuan[:]     #####切片

Out[14]: (1, 2, 3, 4)

In [15]: yuan[1:]    #####切片

Out[15]: (2, 3, 4)

In [16]: yuan[:2]     #####切片

Out[16]: (1, 2)

In [9]: yuan =(1,2,3)

In [10]: l=yuan*3      #####重复

In [11]: l

Out[11]: (1, 2, 3, 1, 2, 3, 1, 2, 3)

In [12]: yuan =(1,2,3)+(4,5,6)  #####连接

In [13]: yuan

Out[13]: (1, 2, 3, 4, 5, 6)

In [14]: len(yuan)   #####查看长度

Out[14]: 6

注意:

In [25]: t = (1)   #####赋值时输入单个数字时,数据类型是×××

In [26]: type(t)

Out[26]: int

In [28]: t = ('hello')#####赋值时输入字符串时,数据类型是字符串

In [29]: type(t)

Out[29]: str

In [30]: t = (1,)#####赋值时输入单个数字加,时,数据类型才是元组

In [31]: type(t)

Out[31]: tuple

4.元组的方法

t.count(value)-->int  返回value在元组中出现的次数;

t.index(value)    返回value在元组中的偏移量(即索引值)

In [16]: t = ('hello','linux')

In [17]: type(t)

Out[17]: tuple

In [18]: t.count('hello')      ####hello在元组中出现的次数

Out[18]: 1

In [19]: t.index('linux')   #####linux在元组中的偏移量

Out[19]: 1

In [20]: t.index('hello')    #####hello在元组中的偏移量

Out[20]: 0

5.删除元组

In [28]: t= (1,2,3)

In [29]: del t

In [30]: t

---------------------------------------------------------------------------

NameError                                Traceback (most recent call last)

in ()

----> 1 t

NameError: name 't' is not defined

150pxp

In [23]: t= (1,2,3)

In [24]: cmp(t,(1,2))

Out[24]: 1

In [25]: cmp(t,(1,2,3,))

Out[25]: 0

In [26]: cmp(t,(1,2,3,4))

Out[26]: -1

In [27]: cmp(t,(1,2,3,4,5))

Out[27]: -1

三 集合

1.集合的定义

set = {}

set = {1,2,3}

set = {1,2,3,1,2,3}

set = {1,2,3,'hello'}

set = {1,2,3,'hello',(1,2,3)}

set = {1,2,3,'hello',(1,2,3),[1,2,3]}

看看是否都可以成功定义集合?

截图:集合里有列表不能成功

068faef065b13c807433990ecb14bdd9.png

2.set的应用场景

集合是一个无序的,不重复的数据组合。

列表去重

关系测试:如交集、差集、并集的关系测试

3.集合的关系测试操作

交集: list_1.intersection(list_2)

并集: list_1.union(list_2)

差集: list_1.difference(list_2)

list_2.difference(list_1)

对等差分 list_1.symmetric_difference(list_2)

子集 list_1.issubset(list_2)

父集 list_1.issuperset(list_2)

有无交集 list_1.isdisjoint(list_2)

交集: list_1 & list_2

并集: list_1 | list_2

差集: list_1 - list_2

list_2 - list_1

对等差分 list_1 ^ list_2

bb336d8cd6105a5d378db047af66ec17.png

10d3cda53003d5a6058ead348ee681b2.png

4.集合的添加

s.add(1)  在集合中添加一项

s.update([1,3,4]) 在集合中添加多项,跟的参数应该是可迭代类型

集合的删除

s.remove(1) 删除集合中指定的元素

s.pop() 随机删除集合中的某个元素,并返回删除的元素

5.集合的其他操作

len(s) 显示集合set的长度

"1" in s 检测某元素是否为集合s的成员,返回布尔值集合的其他操作

s.copy() 集合的浅拷贝,此处不深入研究,后面会说

s.clear() 清空集合的所有元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值