python之列表和元组

1、 定义序列:使用一对中括号将序列中的元素值括起来。

names = [“bill”,”30”,”12.5”,”True”]



names = ["Bill","Mike"]
numbers =[1,2,3,4,5,6]
salary=[3000.0,4000.0,5000.0]
flags=[True,False,True,True]
values=[names,numbers,salary,flags,[‘a‘,‘b‘]]
for value in values:
    print(value)

value序列共有五个元素值,每一个元素值都是一个序列,而且这些序列的元素个数都不相同。

2、序列的基本操作

序列支持很多特定的操作,这些操作所有类型的序列都可以使用。如通过索引引用序列元素(indexing)、分片(slicing)、加(adding)、乘(multiplying)以及检查某个元素是否属于序列的成员,除此之外,Python语言还可以计算序列的长度,找出最大的元素和最小的元素,以及对序列的迭代。

2.1通过索引操作序列元素

序列总所有元素都是有编号的,编号从0开始递增。序列中的所有元素都可以通过编号访问,这个编号被称为索引。访问并输出序列names中的第1个和第3个元素。

names = ["Bill","Mike","Jack"]
print(names[0])
print(names[2])
s="Hello World"
print("Apple"[2])
print(s[0])
print(s[3])

在上面代码中,通过索引2获取了字符串Apple的第三个字符。

通过input输入的字符串也可以通过索引引用其中的某个字符。

输入一个年份,如果只对年份的最后一个字符感兴趣,获取使用索截取年份的最后一位数字。

fourth= input(‘请输入年份:‘)[3]
print(fourth

如果索引是0或正整数,那么Python语言会从序列左侧第一个元素开始取值;如果索引是负数,那么会从序列右侧第一个元素开始取值。序列最后一个元素的索引是-1,倒数第2个元素索引是-2,以此类推。

例题1

months = [
    ‘一月‘,
    ‘二月‘,
    ‘三月‘,
    ‘四月‘,
    ‘五月‘,
    ‘六月‘,
    ‘七月‘,
    ‘八月‘,
    ‘九月‘,
    ‘十月‘,
    ‘十一月‘,
    ‘十二月‘
]
year = input("年:")
month =input(‘月(1-12):‘)
day = input(‘日(1-31):‘)
monthNumber =int(month)#将字符串形式的月转换为数值形式的月
monthName = months[monthNumber - 1]#从序列中获取中文的月份
print(year + "年 " + monthName +" " + day + "日")#按指定格式输入年月日

3、分片

分片操作是从序列A中获取一个子序列B。序列A可以称为父序列。从A中获取B,需要指定B在A中的开始索引和结束索引,因此,分片操作需要指定两个索引。

通过分片操作获取一个URL的一级域名和完整的域名。

url =‘https://geekori.com‘
print(url[8:15])
print(url[8:19])

在指定子序列结束索引时,要指定子序列最后一个元素的下一个元素的索引。

通过将结束索引设为0,获取一个空序列。[-3:0]-----------[].如果要使用负数作为索引,并且获取的子序列的最后一个元素与父序列的最后一个元素相同,那么可以省略结束索引,或结束索引引用整数。

numbers =[1,2,3,4,5,6,7,8]
print(numbers[-3:0])
print(numbers[-3:])
print(numbers[-3:8])print(numbers[:3])print(numbers[:])

[1,2,3]

[1,2,3,4,5,6,7,8]

设置步长

在对序列分片时,默认步长是1,也就是说,获取子序列的元素都是相邻的。如果要获取不相邻的元素,就需要指定步长。

numbers =[1,2,3,4,5,6,7,8,9]
print(numbers[:7:2])
print(numbers[::2])
print(numbers[3::2])
print(numbers[8:2:-2])
print(numbers[8:2:-1])
#print(numbers[1:6:0])抛出异常,步长不能为0,但可以是负数,如果步长是负数,分片会从序列的右侧开始,这时开始索引要大于结束索引
print(numbers[:3:-2])#从序列最后一个元素开始,步长为-2,一直到索引为4的元素结束

str=input("请输入一个整数")
n=int(str);
numbers = range(1,n)#产生包含1到n的数值类型的序列
numbers1=numbers[0::2]#分片获取序列中的奇数
numbers2=numbers[1::2]#分片获取序列中的偶数
for number in numbers1:  #在第一行输出所有奇数
    print(number,end=" ")
print("")
print(" ",end="")
for number in numbers2:  #在第二行错位输出所有偶数
    print(number,end=" ")

4、序列相加

对应序列首位相接,由于字符串属于字符序列,所以字符串相加也可以看作序列相加。但一个字符串不能和一个序列相加,否则会抛出异常。

print([1,2,3]+[6,7,8])
print("Hello"+"world")
print([1,2,3]+["hello"])#把字符串作为序列的一个元素
print([1,2,3] +[‘h‘,‘e‘,‘l‘,‘l‘,‘o‘])
print([1,2,3] +"hello")#抛出异常

5、序列的乘法

#本例通过字符串与数字相乘,复制字符串;通过将序列与数字相乘,复制序列
print(‘hello‘*5)
print([20]*10)
print([None]*6)

spaceNum=5#表示*号每一侧最多的的空格数,本例是5
i =1
lineSpaceNum=spaceNum#表示当前行的前后空格数
triangle=[]#二维列表
#开始生成三角形
while lineSpaceNum>=0:
    #生成星号左侧空格序列
    leftSpaceList=[‘ ‘]*lineSpaceNum
    #生成星号列表
    starList=[‘*‘]*(2*i-1)
    # 生成星号右侧空格序列
    rightSpaceList = [‘ ‘] * lineSpaceNum
    #生成每一行的序列
    lineList=leftSpaceList +starList +rightSpaceList
    triangle.append(lineList)
    lineSpaceNum-=1
    i+=1
for line in triangle:
    print(line)

检查某一个值是否属于一个序列,可以使用in运算符(布尔运算符,也就是说,如果某个值属于一个序列,那么in运算符返回True,否则返回False)

例子:判断一个字符串是否属于另一个字符串,以及一个值是否属于一个序列

str ="I love you"
print("you" in str)
print("hello" in str)
names=["Bill","Mike","John"]
print("Mike" in names)
print("Mary" in names)

例题;

account= [                        #保存了多条用户记录的序列
    ["geekori","123456"],
    ["bill","54321"],
    ["superman","65432"],
    ["androidguy","6543"],
    ["mike435","65abcd"]
]
username=input("用户名:")
password = input("密码:")
#用in运算符判断一个序列是否属于account
if[username,password] in account:
    print("登陆成功")
else:
    print("登陆失败")

6、序列的长度、最大值和最小值

values=[10,40,5,76,33,2,-12]
print(len(values))
print(max(values))
print(min(values))
print(max(4,3,2,5))
print(min(6,5,4))
print(max("abc",5,4))#字符串和数字不能比较,将抛出异常
list=["x",5,4]
print(min(list))#字符串和数字不能比较,将抛出异常

7、列表的基本操作

列表可以使用所有适用于序列的标准操作,例如索引、分片、连接和乘法。但列表还有一些属于自己的操作,如修改列表本事的操作,这些操作包括元素赋值、删除、分片赋值以及下一节要讲的列表方法。

7.1列表元素的赋值

如果要修改列表中的某一个元素,可以像使用数组一样对列表中的特定元素赋值,也就是使用一对中括号指定元素在列表中的索引,然后使用赋值运算符(=)进行赋值

s=["Bill","Mike","John"]
s[0]="Mary"
s[1]=20
print(s)#输出[‘Mary‘, 20, ‘John‘]

7.2删除列表元素

numbers=[1,2,3,4,5,6,7,8]

del numbers[2]

7.3分片赋值

分片赋值和分片获取子列表一样,也需要使用分片操作,也就是需要指定要操作的列表的范围。

s=["hello","world","yeah"]
s[1:]=["a","b","c"]#将列表元素从第二个元素开始替换成一个新的列表
print(s)
name=list("Mike")#使用list函数将“Mike”转换成由字符组成的列表
print(name)
name[1:]=list("ary")#利用分片赋值操作将“Mike”替换成了Mary
print(name)
s=["hello","world","yeah"]
s[1:]=["a","b","c"]#将列表元素从第二个元素开始替换成一个新的列表
print(s)
name=list("Mike")#使用list函数将“Mike”转换成由字符组成的列表
print(name)
name[1:]=list("ary")#利用分片赋值操作将“Mike”替换成了Mary
print(name)

numbers =[1,6,7]
numbers[1:1]=[2,3,4,5] #(:)前面的数字表示要替换的子列表的第一个元素在父列表中的索引,而冒号后面的数字表示子列表下一个元素在父列表中的索引,所以冒号前后两个数字相等,表示不替换列表中任何元素
print(numbers)
numbers[1:4]=[]#使用分片赋值将第2、3、4个元素值替换成了空列表。
print(numbers)

7.4列表方法

方法:其实方法和函数非常类似,只是函数是全局的,而方法需要定义在类中,需要通过对象引用。

#使用sort方法排序,会直接修改原列表,如果要想对列表的副本进行排序,可以使用下面两种方法    #方法1:使用分片进行操作    x = [5,4,1,8,6]    y=x[:]    y.sort();    print(x)    print(y)    #方法2:使用sorted函数    x=[7,6,4,8,5]    y=sorted(x)    print(x)    print(y)
print("-----测试append方法-------")#在列表最后插入新的值
numbers =[1,2,3,4]
numbers.append(5)
print(numbers)
numbers.append([6,7])#将列表[6,7]作为一个值添加到numbers列表后面
print(numbers)
print("-----测试clear方法-------")#用于清除列表内容
names=["Mike","Mary","Jack"]
print(names)
names.clear();
print(names)
print("-----测试copy方法-------")#用于复制一个列表
a=[1,2,3]
b=a
b[1]=30
print(a)
aa=[1,2,3]
bb=aa.copy()#bb是aa的副本
bb[1]=30#修改bb中的元素值,aa中的元素值不会有任何变化
print(aa)
print("-----测试count方法-------")#用于统计某个元素在列表中出现的次数
search=["he","new","he","he","world","peter",[1,2,3],"ok",[1,2,3]]
print(search.count("he"))
print(search.count([1,2,3]))
print("-----测试extend方法-------")#
a=[1,2,3]
b=[4,5,6]
a.extend(b)#将b列表接在a列表的后面,extend方法并不返回值
print(a)
print("-----测试index方法-------")
s=["I","love","python"];
print(s.index("python"))#查询索引位置,如查询的不在会抛出异常
print("-----测试insert方法-------")
numbers=[1,2,3,4,5]
numbers.insert(3,"four")
print(numbers)
print("-----测试pop方法-------")
numbers=[1,2,3]
#pop方法返回删除的元素值
print(numbers.pop())#删除numbers列表中的最后一个元素值
print(numbers.pop(0))#删除numbers列表中第一个元素值
print(numbers)
print("-----测试remove方法-------")
words=["he","new","he","yes","bike"]
words.remove("he")
print(words)
print("-----测试reverse方法-------")
numbers=[1,2,3,4,5,6]
numbers.reverse()
print(numbers)
print("-----测试sort方法-------")
numbers=[5,4,1,7,4,2]
numbers.sort()#默认元素值按升序排序
print(numbers)

#sorted可以对任何序列进行排序
print(sorted("geekori"))

x=[5,4,1,7,5]
x.sort(reversed=True)
print(x)
E:\anaconda3\python.exe F:/pycharmtext/src/列表方法.py
-----测试append方法-------
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, [6, 7]]
Traceback (most recent call last):
-----测试clear方法-------
[‘Mike‘, ‘Mary‘, ‘Jack‘]
[]
-----测试copy方法-------
  File "F:/pycharmtext/src/列表方法.py", line 60, in <module>
[1, 30, 3]
[1, 2, 3]
    x.sort(reversed=True)
-----测试count方法-------
TypeError: ‘reversed‘ is an invalid keyword argument for sort()
3
2
-----测试extend方法-------
[1, 2, 3, 4, 5, 6]
-----测试index方法-------
2
-----测试insert方法-------
[1, 2, 3, ‘four‘, 4, 5]
-----测试pop方法-------
3
1
[2]
-----测试remove方法-------
[‘new‘, ‘he‘, ‘yes‘, ‘bike‘]
-----测试reverse方法-------
[6, 5, 4, 3, 2, 1]
-----测试sort方法-------
[1, 2, 4, 4, 5, 7]
[‘e‘, ‘e‘, ‘g‘, ‘i‘, ‘k‘, ‘o‘, ‘r‘]

Process finished with exit code 1
E:\anaconda3\python.exe F:/pycharmtext/src/列表方法.py
-----测试append方法-------
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, [6, 7]]
Traceback (most recent call last):
-----测试clear方法-------
[‘Mike‘, ‘Mary‘, ‘Jack‘]
[]
-----测试copy方法-------
  File "F:/pycharmtext/src/列表方法.py", line 60, in <module>
[1, 30, 3]
[1, 2, 3]
    x.sort(reversed=True)
-----测试count方法-------
TypeError: ‘reversed‘ is an invalid keyword argument for sort()
3
2
-----测试extend方法-------
[1, 2, 3, 4, 5, 6]
-----测试index方法-------
2
-----测试insert方法-------
[1, 2, 3, ‘four‘, 4, 5]
-----测试pop方法-------
3
1
[2]
-----测试remove方法-------
[‘new‘, ‘he‘, ‘yes‘, ‘bike‘]
-----测试reverse方法-------
[6, 5, 4, 3, 2, 1]
-----测试sort方法-------
[1, 2, 4, 4, 5, 7]
[‘e‘, ‘e‘, ‘g‘, ‘i‘, ‘k‘, ‘o‘, ‘r‘]

Process finished with exit code 1

8元组

元组与列表一样,也是一种序列。唯一不同的是元组不能修改,也就是说,元组是只读的。定义元组非常简单,只需要用逗号(,)分隔一些值即可。

numbers=1,2,3   #创建元组
print(numbers)
names=("Bill","Mike","Jack")
print(names)
values=40, #创建一个值的元组
print(values)
#生成5个同样值的元组
print(5*(12 + 4,))
#不是元组是一个数
print(5*(12+4))
#将一个序列转换位元组(tuple函数)
print(tuple([1,2,3]))
print(tuple("geekori"))
E:\anaconda3\python.exe F:/pycharmtext/src/元组.py
(1, 2, 3)
(‘Bill‘, ‘Mike‘, ‘Jack‘)
(40,)
(16, 16, 16, 16, 16)
80
(1, 2, 3)
(‘g‘, ‘e‘, ‘e‘, ‘k‘, ‘o‘, ‘r‘, ‘i‘)

Process finished with exit code 0

有两个重要原因必须要使用元组。

(1)元组可以在映射中作为键值使用,而列表不能这么用。

(2)很多内建函数和方法的返回值就是元组,也就是说,如果要使用这些内建的函数和方法的返回值,就必须使用元组。

原文地址:https://www.cnblogs.com/lcy1995/p/11619542.html

时间: 2024-08-30 15:43:59

python之列表和元组的相关文章

python的列表,元组和字典简单介绍

引 入 java                                   python 存取多个值:数组或list集合 ------------------------> 列表,元组 key-value格式:    Map        ------------------------>    字典 自己学习发现,java跟python这两门面向对象语言在数据类型的定义上,很多思想都是互通的,这里不说java,简单介绍一下python的列表,元组和字典. 一.列表 List: 最通

python数据结构-列表和元组

1.列表和元祖 1)列表和元组,都是一个可以放置任意数据类型的有序集合 在绝大多数编程语言中,集合的数据类型必须一致.不过,对于 Python 的列表和元组来说,并无此要求 2)两者区别: 列表是动态的,长度大小不固定,可以随意地增加.删减或者改变元素(mutable) 而元组是静态的,长度大小固定,无法增加删减或者改变(immutable) 可是,如果你想对已有的元组做任何"改变",该怎么办呢?那就只能重新开辟一块内存,创建新的元组了. 3)Python 中的列表和元组都支持负数索引

python:列表与元组

1.python包含六种内建的序列,列表和元组是其中的两种,列表可以修改,元组则不能 2.通用序列操作 2.1 索引:和C#的区别是索引可以为负数,最后一个元素索引为-1,索引超出范围会报错 例:>>>a='hello' >>>a[-2] 'l' 2.2分片:可以使用分片来获取序列一定范围内的元素,即截取:从python2.3开始添加了步长,分片的第一个数字代表起始位置,第二个代表结束位置(索引+1),第三个数字代表步长 例:>>>numbers=[1

python 之列表和元组

list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> classmates = ['Michael', 'Bob', 'Tracy'] >>> classmates ['Michael', 'Bob', 'Tracy'] 变量classmates就是一个list.用len()函数可以获得list元素的个数: >>> len(c

python中列表,元组,字符串互相转换

列表,元组和字符串python中有三个内建函数:,他们之间的互相转换使用三个函数,str(),tuple()和list(),具体示例如下所示 >>> s = "xxxxx" >>> list(s) ['x', 'x', 'x', 'x', 'x'] >>> tuple(s) ('x', 'x', 'x', 'x', 'x') >>> tuple(list(s)) ('x', 'x', 'x', 'x', 'x')

Python自动化 【第二篇】:Python基础-列表、元组、字典

本节内容 模块初识 .pyc简介 数据类型初识 数据运算 列表.元组操作 字符串操作 字典操作 集合操作 字符编码与转码 一.模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,让我们先来象征性的学2个简单的. sys 1 #!/usr/bin/env python 2 3 # -*- coding: utf-8 -*- 4 5 6 7 import sys 8 9 10 11 print(sys.argv) 12 13

Python:列表,元组

一.列表 和字符串一样,列表也是序列类型,因此可以通过下标或者切片操作访问一个或者多个元素.但是,不一样的,列表是容器类型,是可以进行修改.更新的,即当我们进行修改列表元素,加入元素等操作的时候,是对原始对象自身的直接变更,而非新对象的创建. 列表可以以任何类型对象作为自己的元素(包括用户自定义类型),而且更为灵活的是,一个列表中可以同时容纳不同类型的对象(这是C/C++中的数组或vector所不能做到的). 1.创建列表 1 2 3 4 listDemo1 = [123, 'abc', 45.

python:列表、元组和字典

1.1.特点: 任意对象的有序集合 通过偏移量读取 可变长度,异构以及任意嵌套 属于可变序列的分类 对象引用数组:当把一个对象赋给一个数据结构元素或变量名时,python总会存储对象的引用,而不是对象的拷贝. 1.2.创建列表     name_list = ['zhang', 'wang', 'li']     或 name_list = list(['zhang', 'wang', 'li']) 1.3.基本操作 索引:name_list[1] 列表中,第一个元素索引值为0.     追加:

python中列表,元组,字符串如何互相转换

python中有三个内建函数:列表,元组和字符串,他们之间的互相转换使用三个函数,str(),tuple()和list(),具体示例如下所示: >>> s = "xxxxx">>> list(s)['x', 'x', 'x', 'x', 'x']>>> tuple(s)('x', 'x', 'x', 'x', 'x')>>> tuple(list(s))('x', 'x', 'x', 'x', 'x')>&g

python数据类型——列表、元组、字典、集合

python中的序列,是一块用来存储多个值的连续内存空间,类似于C语言中的数组 常用的序列结构有列表.元组.字典.字符串.集合等, 无序序列:字典.集合 有序序列:列表.元组.字符串,支持双向索引(第一个元素下标为0,最后一个元素下标为-1) 不可变序列:字符串.元组 可变序列:列表.集合.字典 一.列表 尽量从列表尾增加或删除元素,可以大幅度提高处理速度 列表中的元素可以不相同 列表常用方法,见下表,可参考https://www.cnblogs.com/huangping/p/7730347.