Python-列表和元祖

简介:

Python-列表和元祖

首先,大家如果看到有什么不懂的地方,欢迎吐槽!!!
我会在当天或者第二天及时回复,并且改进~~


在Python中,最基本的数据结构是序列,
序列包含:

  • 列表
  • 元祖

其他的内建序列类型有:

  • 字符串
  • Unicode字符串
  • buffer对象
  • xrange对象

一、通用序列操作
所有的序列类型都可以进行某些特定的操作。这些操作包括:索引、分片、加、乘及检查某个元素是否属于序列的成员。

1.1 索引

>>> name = 'hongxue'
>>> name[0]
'h'
>>> name[0:3]
'hon'
这就是索引,字符串是一个由字符组成的序列。索引0指向第1个元素,在当前例子中就是h
可以通过索引获取元素

>>> str = raw_input('Year: ')[3]
Year:2015
>>> str
'5'

1.2 分片
索引是访问单个元素,分片与索引类似,但是它来访问的是一定范围内的元素,分片通过冒号隔开的两个索引实现:

分片操作对于提取序列的一部分是很有用的。而编号在这里显得尤为重要。第1个索引是要提取的第1个元素的编号,而最后的索引则是分片之后剩余部分的第1元素的编号。

(1) 优雅的捷径
>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> numbers[0:3]
[1,2,3]
>>> numbers[3:8]
[4,5,6,7,8]
>>> numbers[2:7]
[3,4,5,6,7]
numbers[-3:-1]
[8,9]
numbers[-3:]
[8,9,10]
numbers[:3]
[1,2,3]
numbers[:]
[1,2,3,4,5,6,7,8,9,10]

分片示例:
>>> name = raw_input('Please input your name:')[0:4]
Please input your name:hongxue
>>> print name
'hong'

(2) 更大的步长
进行分片的时候,分片的开始和结束点需要进行指定(不管是直接还是间接)。而另外一个参数–步长通常都是隐式设定的。默认为1,则可以手动进行设置

>>> print numbers[:]
[1,2,3,4,5,6,7,8,9,10]
>>> numbers[0:10:2]
[1,3,5,7,9]
>>> numbers[3:6:3]
[4]
>>> numbers[::4]
[1,5,9]

当然,步长可以是负数,此时分片从右到左提取
>>> numbers[8:3:-1]
[9,8,7,6,5]
>>> numbers[10:0:-2]
['10,8,6,4,2']
>>> numbers[::-2]
[10,8,6,4,2]
>>> numbers[5::-2]
[6,4,2]
>>> numbers[:5:-2]
[10,8]

对于一个正数步长,Python会从序列的头部开始向右提取元素,直到最后一个元素,
对于一个负数步长,Python会从序列的尾部开始向左提取元素,直到第一个元素。

1.3 序列相加
通过使用加运算符可以进行序列的连接操作:

>>> [1,2,3] + [4,5,6]
[1,2,3,4,5,6]

>>> x = ['hong']
>>> y = ['xue']
>>> x + y
['hong','xue']

当然,列表和字符串是无法连接在一起的,尽管它们都是序列。
两种类型相同的序列才能进行连接操作,例如:
>>> x = '123'
>>> y = ['4,5,6']
>>> x + y

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'list' objects

1.4 乘法
用数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复n次

>>> 'Python' * 5
'PythonPythonPythonPythonPython'
>>> [30] * 10
'30,30,30,30,30,30,30,30,30,30'

None、空列表和初始化
空列表可以简单的通过两个中括号进行表示,里面什么也没有。但是,如果想创建一个占用十个元素空间,却不包括任何有用内容的列表,可以想前面那样,[42] * 10,这样会更加实际一些。然而,有时候可能会需要一个值来代表空值—意味着里面没有任何东西,这个时候就需要用到None,None是Python的内键值,它的确切含义是”这里什么也没有”。

创建占用十个元素的空间
>>> [] * 10
[]

创建一个空值
>>> Value = [None] * 10
>>> Value
[None,None,None,None,None,None,None,None,None,None]
代码清单   序列(字符串)乘法表示

sentence = raw_input('Sentence: ')

screen_width = 80
text_width = len(setence)
box_width = text_width + 6
left_margin = (screen_width - box_width) / 2

print 
print ' ' * left_margin + '+'  + '-' * (box_width-2) + '+'
print ' ' * left_margin + '| ' + ' ' * text_width    + '|' 
print ' ' * left_margin + '| ' +       sentence      + '|'
print ' ' * left_margin + '| ' + ' ' * text_width    + '|'
print ' ' * left_margin + '+'  + ‘-’ * (box_width-2) + '+'
print 

1.5 成员资格
为了检查一个值是否在序列中,可以使用in运算符,这个运算符检查某个条件是否为真,然后返回相应的值,也叫做’布尔值’

条件为真返回True
条件为假返回False
>>> permissions='rw'
>>> 'r' in permissions   
>>> 'w' in permissions
>>> 'x' in permissions

#检查用户是否在name列表中
>>> name = ['hongxue','xiaomao','yixiao']
>>> 'hongxue' in name
>>> 'xiaomao' in name
#检查用户名和PIN码
>>> database = [['hongxue','123'],['yixiao','456'],['xiaomao','789']]
>>> username = raw_input('User name: ')
>>> pin = raw_input('PIN code: ')
>>> if [username,pin] in database : print 'Access granted'

1.6 长度、最小值和最大值
内建函数len、min和max非常有用

len函数返回序列中所包含元素的数量
min函数返回序列中最小的元素
max函数返回序列中最大的元素

numbers = [456,214,999]
>>> len(numbers)      #返回元素个数
3
>>> min(numbers)      #返回最小元素
214
>>> max(numbers)      #返回最大元素
999
相关文章
|
29天前
|
索引 Python
Python列表
Python列表。
48 8
|
1月前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
35 9
|
1月前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
65 14
|
1月前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
92 10
|
2月前
|
数据处理 开发者 Python
Python中的列表推导式:简洁高效的数据处理
在编程世界中,效率和可读性是代码的两大支柱。Python语言以其独特的简洁性和强大的表达力,为开发者提供了众多优雅的解决方案,其中列表推导式便是一个闪耀的例子。本文将深入探讨列表推导式的使用场景、语法结构及其背后的执行逻辑,带你领略这一特性的魅力所在。
|
2月前
|
开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第41天】 在编程的世界中,效率与简洁是永恒的追求。本文将深入探讨Python编程语言中一个独特且强大的特性——列表推导式(List Comprehension)。我们将通过实际代码示例,展示如何利用这一工具简化代码、提升性能,并解决常见编程问题。无论你是初学者还是资深开发者,掌握列表推导式都将使你的Python之旅更加顺畅。
|
2月前
|
Python
探索Python中的列表推导式
【10月更文挑战第38天】本文深入探讨了Python中强大而简洁的编程工具——列表推导式。从基础使用到高级技巧,我们将一步步揭示如何利用这个特性来简化代码、提高效率。你将了解到,列表推导式不仅仅是编码的快捷方式,它还能帮助我们以更加Pythonic的方式思考问题。准备好让你的Python代码变得更加优雅和高效了吗?让我们开始吧!
|
2月前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy教程之SciPy模块列表13:单位类型。常量模块包含多种单位,如公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了如何使用`constants`模块获取零摄氏度对应的开尔文值(273.15)和华氏度与摄氏度的转换系数(0.5556)。
25 1
|
2月前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
48 2
|
3月前
|
Python
SciPy 教程 之 SciPy 模块列表 9
SciPy教程之常量模块介绍,涵盖多种单位类型,如公制、质量、角度、时间、长度、压强等。示例展示了如何使用`scipy.constants`模块查询不同压强单位对应的帕斯卡值,包括atm、bar、torr、mmHg和psi。
22 1