python入门——操作列表

操作列表

1.0遍历整个列表

使用for循环

magjicians = ['alice','david','carolina']
for magician in magicians:#对了,magician是可以随便改的,不一定是列表里的名字
    print(magician)

for循环使python从列表magicians中取出一个名字,并将其存储在变量magician中

研究一下

for magician in magicians:

获取第一个值‘alice’,存储在magician,读取下一行

print(magcian)

打印magician的值’alice’,由于for语句的列表magicians的数据没有读取完,返回循环的第一行

接着依次打出‘david’’carolina’

来写更多的操作

magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician.title() + ", that was a great trick!")
#把magician当成普通的变量即可

在python中,只有缩进的语句会被重复执行,

magicians = ['alice', 'david', 'carolina']
for magician in magicians:
    print(magician.title() + ", that was agreat trick!")
	print("I can't wait to see your next trick, " + magician.title() + ".\n")
print("thank you ,everyone")

避免缩进错误

magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
#忘记缩进 
#indentationerror:expected an indented block

别忘了冒号:

2.0创建数值列表

使用函数range()

形式:range(数值,数值),切记这个数值只能是整数

**range(1,5)**不是列表,没有数值

只能用循环来表示

for value in range(1,5):
	print(value)
    #输出
    1
    2
    3
    4
    #会差一
p = range(1,5)
print(p)
#事实上,会输出range(1,5)
#但是,并没有加双引号,为什么不会出现error

list()

list()将range()的结果直接转换为列表

numbers = list(range(1,6))
print(numbers)
#结果
[1,2,3,4,5]

还可以指定步长

even_numbers = list(range(2,11,2))
print(even_numbers)
#result
[2,4,6,8,10]
#range的第三个参数是表示两个数之间差多少

怎么表示(1~10)的平方,用(**)表示平方运算

squares = []
for value in range(1,11):
    square = value**2
    #可以不用临时变量square
    squares.append(square)
    #记住添加列表元素的方法
    #.append()和insert(,)
    print (squares)

简单的统计运算

min(列表名),max(列表名),sum(列表名)

digits = [1,2,3,4,5,6,7,8,9,0]
min = min(digits)
max = max(digits)
sum = sum(digits)
print(min)
print(max)
print(sum)
#当然可以不用变量min,max ,sum。直接放到print后面去

列表解析

列表解析将for循环和创建新元素的代码和成一行

squares = [value**2 for value in range(1,11)]
print(squares)
#要使用这种语法, 首先指定一个描述性的列表名, 如squares ; 然后, 指定一个左方括号, 并定义一个表达式, 用于生成你要存储到列表中的值。 
在这个示例中, 表达式为value**2 , 它计算平方值。 接下来, 编写一个for 循环, 用于给表达式提供值, 再加上右方括号。 在这个示例中, for 循环为for value in range(1,11) , 它将值1~10提供给表达式value**2#请注意, 这里的for 语句末尾没有冒号  

使用列表的一部分

一直在学习如何处理列表的所有元素。 你还可以处理列表的部分元素——Python称之为切片

切片

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

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

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

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

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

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

负数索引返回离列表末尾相应距离的元素, 因此你可以输出列表末尾的任何切片。
例如, 如果你要输出名单上的最后三名队员,
可使用切片players[-3:] :
*

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

遍历切片

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

复制列表

my_foods = ['pizza', 'falafel', 'carrot cake']
#复制列表,要用切片的形式
friend_foods = my_foods[:]
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)

如果不使用切片

my_foods = ['pizza', 'falafel', 'carrot cake']
#这行不通
friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
#结果
My favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']

这里将my_foods 赋给friend_foods , 而不是将my_foods 的副本存储到friend_foods (见❶) 。 这种语法实际上是让Python将新变量friend_foods 关联到包含在my_foods 中的列表, 因此这两个变量都指向同一个列表。 鉴于此, 当我们将’cannoli’ 添加到my_foods 中时, 它也将出现在friend_foods 中; 同样, 虽然’icecream’ 好像只被加入到了friend_foods 中, 但它也将出现在这两个列表中。

不可变的列表——元组

元组看起来犹如列表, 但使用圆括号而不是方括号来标识。 定义元组后, 就可以使用索引来访问其元素, 就像访问列表元素一样

dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
#结果
200
50

尝试修改

dimensions = (200, 50)
dimensions[0] = 25
Traceback (most recent call last):
File "dimensions.py", line 3, in <module>
dimensions[0] = 250
TypeError: 'tuple' object does not support item assignment

遍历元组的所有值

dimensions = [200,50]
for dimension in dimensions:
    print(dimension)
    #结果
    200
    50

虽然不能修改元组的元素,但是可以通过给存储元组的变量重新赋值。重新定义一个列表

dimensions = (200,50)
print("oringnal dimensions:")
for dimension in dimensions:
    print(dimension)
dimensions = (400,100)
print("modifed dimensions:")
for dimension in dimensions:
    print(dimension)
    #结果
Original dimensions:
200
50
Modified dimensions:
400
100
   #这里就有一个疑问,在C中,一个变量名是只能存储一个变量的,事实上,python也是如此,那为何第四行的print的值不会变成修改后的呢
#是因为python是即时型解释语言

来做个测试,直接搞个变量,然后再重新修改

my_watch = "lashiton"
print(my_watch)
my_watch = "syst"
print(my_watch)
#结果
lashiton
syst

这里要强调的是,在计算机的内存中,变量的值确实改变了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值