循环:列表,元组

数据结构。数据结构是以某种方式(如通过编号)组合起来的数据元素(如数、字符乃至其他数据结构)集合

在Python中,最基本的数据结构为序列(sequence)。序列中的每个元素都有编号,即其位置或索引,其中第一个元素的索引为0,第二个元素的索引
为1.

python 内置多种序列,最常用的两种:列表和元组,还有字符串
列表和元组的主要不同在于,列表是可以修改的,而元组不可以,列表适用于需要中途添加元素的情形,而元组适用于出于某种考虑需要禁止修改序列的情形

列表来表示(所有元素都放在方括号内,并用逗号隔开)

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

通用的序列操作

索引、切片、相加、相乘和成员资格检查,迭代(iteration)。

grr = "shlsjgjl"
print(grr[2])
l


endings = ['st', 'nd', 'rd'] + 17 * ['th'] 
 + ['st', 'nd', 'rd'] + 7 * ['th'] 
 + ['st'] 
print(endings)

['st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'st']
​

遍历列表

bis= ["sss", "ass222","kjjga","dksjkgj"]
for xx in bis :
    print(xx)



sss
ass222
kjjga
dksjkgj

循环临时存储建议:

for cat in cats:
for dog in dogs:
for item in list_of_items: 

循环中执行更多操作:

bis= ["sss", "ass222","kjjga","dksjkgj"]
for xx in bis :
    print(xx + "  你好" "
")
print("loop  is end ")    


sss  你好

ass222  你好

kjjga  你好

dksjkgj  你好

loop  is end 

避免缩进错误

Python根据缩进来判断代码行与前一个代码行的关系
不必要的缩进/忘记缩进/循环后不必要的缩进/遗漏冒号

创建数值列表

列表非常适合用于存储数字集合
range()函数

for xx in range(1,5):
    print(xx)
1
2
3
4

使用 range()创建数字列表

xxx = list(range(1,5))
print(xxx)
for x in xxx:
    print(x)


 for value in range(1,11): 
        xx = value ** 2
        print(xx)

列表步长

xx = list(range(1,10,2))
print(xx)

对数字列表执行简单的统计计算

>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits)
0
>>> max(digits)
9
>>> sum(digits)
45 

列表解析

列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。

squares = [value**2 for value in range(1,11)]
print(squares) 

切片:切片(slicing)来访问特定范围内的元素,使用两个索引,并用冒号分隔

可指定要使用的第一个元素和最后一个元素的索引。
与函数range()一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0、1和2的元素。
提供两个索引来指定切片的边界,其中第一个索引指定的元素包含在切片内,但第二个索引指定的元素不包含在切片内

players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[0:4])

如果你没有指定第一个索引,Python将自动从列表开头开始

players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[:4])

要让切片终止于列表末尾,也可使用类似的语法

players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[2:])

特定位置到末尾:

players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[-2:])

遍历切片

players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print("Here are the first three players on my team:") 
for xx in players[-3:]:
    print(xx)

复制列表

players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
xx = players[:]
print(xx)

结果不同:
xx = players

对一个变量操作会导致另一个变量也变化,因为两者指向同一个列表

序列相加:
不能拼接列表和字符串,不能拼接不同类型的序列

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

'Hello,' + 'world!' 

乘法:

'python' * 5 

None、空列表和初始化

空列表是使用不包含任何内容的两个方括号([])表示的
None表示“什么都没有”的值,如表示还没有在列表中添加任何内容。在这种情况下,可使用None

sequence = [None] * 10
print(sequence)    

成员资格

检查特定的值是否包含在序列中,可使用运算符in,它检查是否满足指定的条件,并返回相应的值:满足时返回True,
不满足时返回False。这样的运算符称为布尔运算符,真值称为布尔值

ss = "kskljg"
'k' in ss

元组tuple

tuple一旦初始化就不能修改
tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来

列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的。
Python将不能修改的值称为不可变的,而不可变的列表被称为元组。

元组使用圆括号定义。可以使用索引来访问其元素,就像访问列表元素一样

players = ('charles', 'martina', 'michael', 'florence', 'eli')
print(players[3])

##赋值失败
players[0] = "xxxxxx"
此Python指出不能给元组的元素赋值

如果要定义一个空的tuple,可以写成():
要定义一个只有1个元素的tuple,如果你这么定义:

>>> t = (1)
>>> t
1

定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。

只有1个元素的tuple定义时必须加一个逗号,,来消除歧义
Python在显示只有1个元素的tuple时,也会加一个逗号

a = (1,)
print(a)

一个可变的元组

>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])


表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

遍历

players = ('charles', 'martina', 'michael', 'florence', 'eli')
for x in players:
    print(x)

修改元组变量

不能修改元组的元素,但可以给存储元组的变量赋值

 dimensions = (200, 50)
 dimensions = (400, 100) 

代码格式

每级缩进4个空格
都建议每行不超过80字符
将程序的不同部分分开,可使用空行

参考廖雪峰博客

函数 list

可将任何序列(而不仅仅是字符串)作为list的参数

#拆分
list("hellow")

#合并
x = ['h', 'e', 'l', 'l', 'o', 'w']
''.join(x)

索引

并行迭代两个序列zip 函数

将两个序列“缝合”起来,并返回一个由元组组成的序列。返回值是一个适合迭代的对象,要查看其内容,可使用list将其转换为列表。
当序列的长度不同时,函数zip将在最短的序列用完后停止“缝合”

names = ['anne', 'beth', 'george', 'damon']
ages = [12, 45, 32, 102] 
list(zip(names, ages))

迭代时获取索引

用内置函数enumerate

for index, string in enumerate(strings):
 if 'xxx' in string:
 strings[index] = '[censored]'

原文地址:https://www.cnblogs.com/g2thend/p/11729796.html