Python----列表与元组

本文介绍了Python中的数据结构,重点讲解了序列,包括列表和元组,强调了它们的可变性差异。此外,还讨论了字符串作为序列的特性,以及如何进行索引和切片操作。切片允许访问序列的部分元素,可以通过指定起始、结束索引和步长。文章还提及了序列的加法和乘法操作,并简单提到了成员资格检查。
摘要由CSDN通过智能技术生成

前言:数据结构。数据结构是以某种方式(如通过编号)组合起来的数据

元素(如数、字符乃至其他数据结构)集合。在 Python 中,最基本的数据结构为 序列 sequence )。 序列中的每个元素都有编号,即其位置或索引,其中第一个元素的索引为0 ,第二个元素的索引 为1 ,依此类推。在有些编程语言中,从 1 开始给序列中的元素编号,但从 0 开始指出相对于序列 开头的偏移量 。这显得更自然,同时可回绕到序列末尾,用负索引表示序列末尾元素的位置。你可能认为这种编号方式有点怪,但我敢肯定,你很快就会习惯的。

一、 序列概述

   Python内置了多种序列,如列表与元组。还有一个比较重要的序列是字符串,这将会在另外一篇博客中详述。

   列表与元组的主要不同点在于:列表是可以修改的,而元组不可以。这意味着列表适用于需要中途添加元素的情形,而元组适用于出于某种考虑需要禁止修改序列的情形。禁止修改序列通常
出于技术方面的考虑,与Python的内部工作原理相关,这也是有些内置函数返回元组的原因所在。
在你自己编写程序时,几乎在所有情况下都可使用列表来代替元组。一种例外情况是将元组用作
字典键,在这种情况下,不能使用列表来代替元组,因为字典键是不允许修改的。

  序列可以包含其他序列,所以可创建一个有数据库中的成员组成的列表:

curry = ['Stephen Curry', 34]
james = ['LeBron James', 38]
irving = ['Kyrie Irving', 30]
datebase = [curry, james, irving]
print("输出结果:", datebase)

#输出结果: [['Stephen Curry', 34], ['LeBron James', 38], ['Kyrie Irving', 30]]

 干货时间:Python支持一种数据结构的基本概念,名为容器(container)。容器基本上就是可包含其他对象的对象。两种主要的容器是序列(如列表和元组)和映射(如字典)。在序列中,
每个元素都有编号,而在映射中,每个元素都有名称(也叫键)。有一种既不是序列也不是映射的容器,它就是集合(set)。

 二、通用常用的序列操作

1、索引

     序列中的所有元素都有编号——从0开始递增。看我操作:

getstring = 'contrement'
print(getstring, getstring[0])

#contrement c

 干货时间:字符串就是由字符组成的序列。索引0指向第一个元素,这里为字母c。不同于其他语言,Python没有专门表示字符的类型,因此一个字符就是表示包含一个元素的字符串。

这称为 索引 indexing )。你可使用索引来获取元素。这种索引方式适用于所有序列。当你使
用负数索引时, Python 将从右(即从最后一个元素)开始往左数,因此- 1 是最后一个元素的位置。
看我操作:
getstring = 'contrement'
print(getstring, getstring[0],getstring[-1])

#contrement c t
对于字符串字面量(以及其他的序列字面量),可直接对其执行索引操作,无需先将其赋给
变量。这与先赋给变量再对变量执行索引操作的效果是一样的。
getstring = 'contrement'
print(getstring, 'contrement'[-10])

#contrement c
如果函数调用返回一个序列,可直接对其执行索引操作。
Store = input('Store: ')
print(Store[2] + Store[3] + Store[4] + Store[5])


#Store: i like meijia zhu
# like

2、切片

除使用索引来访问单个元素外,还可使用切片slicing)来访问特定范围内的元素。因此可以使用两个索引,用冒号分隔:

Tab = 'Love is unwavering'

print(Tab[0:5])

#Love 
干货时间:切片适用于提取序列的一部分,其中的编号非常重要:第一个索引是包含的第一个元素的编号,但第二个索引是切片后余下的第一个元素的编号。(负数原理与索引一样)
number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(number[4:7])
print(number[0:1])
print(number[-3:-1])

#[5, 6, 7]
#[1]
#[8, 9]

进阶操作:

进阶一:

隐式:如果切片结束于序列末尾,可省略第二个索引,同理,切片开始是序列开始,可省略第一个索引

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

print(number[:3])
print(number[:])

'''
Love 
[5, 6, 7]
[1]
[8, 9]
[1, 2, 3]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
'''

方法实例:

提取域名:

# 从类似于http://www.something.com的URL中提取域名
url = input('Please enter the URL:') 
domain = url[11:-4] 
print("Domain name: " + domain)

'''
Please enter the URL: http://www.python.org 
Domain name: python
'''

进阶操作二:

步长:执行切片操作时,你显式或隐式地指定起点和终点,但通常省略另一个参数,即步长。

在普 通切片中,步长为1 。这意味着从一个元素移到下一个元素,因此切片包含起点和终点之间的所有元素。(步长不能为0)
number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(number[0:10:1])
print(number[0:10:2])
print(number[::3])
print(number[5:9:-2])
print(number[10:0:-1])

'''
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 3, 5, 7, 9]
[1, 4, 7, 10]
[]
[10, 9, 8, 7, 6, 5, 4, 3, 2]

'''

步长为负数时,表示从右往左提取元素。

既步长为正数时,它从起点移到终点,而步长为负数时,它从终点移到起点。

3、序列相加

4、乘法

5、成员资格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值