设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 35003|回复: 24
打印 上一主题 下一主题

【Python 第26课】 操作list

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2014-4-24 18:32:35 |只看该作者 |正序浏览
上周给list开了个头,知道了什么是list。假设我们现在有一个list:

l = [365, 'everyday', 0.618, True]

除了用for...in遍历l中的元素,我们还能做点啥?

1. 访问list中的元素
list中的每个元素都对应一个递增的序号。与现实中习惯的序号不同在于,计算机中的计数通常都是从0开始,python也不例外。如果你记不清这个而导致了错误,请去听一下孙燕姿的《爱从零开始》。

要访问l中的第1个元素365,只要用l[0]就可以了。依次类推,
print l[1]
就会输出'everyday'

注意,你不能访问一个不存在的元素,比如l[10],程序就会报错,提示你index越界了。

2. 修改list中的元素
修改list中的某一个元素,只需要直接给那个元素赋值就可以了:

l[0] = 123

输出l,得到[123, 'everyday', 0.618, True],第1个元素已经从365被改成了123。

3. 向list中添加元素
list有一个append方法,可以增加元素。以l这个列表为例,调用的方法是:

l.append(1024)

输出l,你会看到[123, 'everyday', 0.618, True, 1024],1024被添加到了l,成为最后一个元素。(第一个元素在上一步被改成了123)

然后同样可以用l[4]得到1024。

4. 删除list中的元素
删除list中的某一个元素,要用到del:

del l[0]

输出l,得到['everyday', 0.618, True, 1024]。这时候再调用l[0],会得到'everyday',其他元素的序号也相应提前。

以上这些命令,你可以直接在python shell中尝试。
0.jpeg

#==== 点球小游戏 ====#
我打算从今天开始,每天说一点这个小游戏的做法。方法有很多种,我只是提供一种参考。你可以按照自己喜欢的方式去做,那样她才是属于你的游戏。

先说一下方向的设定。我的想法比较简单,就是左中右三个方向,用字符串来表示。射门或者扑救的时候,直接输入方向。所以这里我准备用raw_input。有同学是用1-8的数字来表示八个方向,每次输入一个数字,这也是可以的。不过这样守门员要扑住的概率可就小多了。

至于电脑随机挑选方向,如果你是用数字表示,就用我们之前讲过的randint来随机就行。不过我这次打算用random的另一个方法:choice。它的作用是从一个list中随机挑选一个元素。

于是,罚球的过程可以这样写:

from random import choice
print 'Choose one side to shoot:'
print 'left, center, right'
you = raw_input()
print 'You kicked ' + you
direction = ['left', 'center', 'right']
com = choice(direction)
print 'Computer saved ' + com
if you != com:
   print 'Goal!'
else:
   print 'Oops...'

反之亦然,不赘述。

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

2

好友

72

积分

注册会员

Rank: 2

25#
发表于 2018-4-6 12:28:34 |只看该作者
暂时做成这样啦,后续完善吧~
  1. direc=['left','middle','right']
  2. import random
  3. goalkeeper=random.choice(direc)
  4. shoot=input('please choose the direction:left,middle or right:')
  5. score=0
  6. while goalkeeper!=shoot:
  7.     print('Goal')
  8.     shoot=input('try,again?')
  9.     score=score+1
  10. print('Oh,no,the goalkeeper is in the %s,and your score is %d' %(goalkeeper,score))
复制代码
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

24#
发表于 2018-3-2 13:54:57 |只看该作者
q915417507 发表于 2018-3-1 16:57
老师 我用Python3 无法用print range(1,10)来输出列表  用 Print (range(1,10))  它也不会输出
)那么在pyth ...

list(range(1,10))

如果只是要循环遍历,直接用就range可以
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

23#
发表于 2018-3-1 16:57:31 |只看该作者
老师 我用Python3 无法用print range(1,10)来输出列表  用 Print (range(1,10))  它也不会输出
)那么在python3中 如何来输出range(1,10)呢
回复

使用道具 举报

0

主题

0

好友

154

积分

注册会员

Rank: 2

22#
发表于 2017-11-28 18:41:12 |只看该作者
Imagination 发表于 2017-11-28 15:41
you = raw_input()  在python3 中怎么打  我打出来 显示错误 说是raw_input没有被定义   最后 我改成you =  ...

Python3只有input(),没有raw_input()
回复

使用道具 举报

1

主题

0

好友

37

积分

新手上路

Rank: 1

21#
发表于 2017-11-28 15:41:18 |只看该作者
you = raw_input()  在python3 中怎么打  我打出来 显示错误 说是raw_input没有被定义   最后 我改成you = str(input())
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

20#
发表于 2017-2-25 22:09:36 |只看该作者
brahmagupta 发表于 2017-2-24 18:25
这个好,就像 Roll 点一样!

对,就这个意思
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

145

积分

注册会员

Rank: 2

19#
发表于 2017-2-24 18:25:58 |只看该作者
crossin先生 发表于 2017-2-24 16:52
可以。精确控制的话,就要自己写个函数来处理了。通常方法是产生一个随机数,根据随机数落在的范围决定产 ...

这个好,就像 Roll 点一样!
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

18#
发表于 2017-2-24 16:52:29 |只看该作者
brahmagupta 发表于 2017-2-24 16:26
不过 精确控制和分配各个方向的扑救 成功率 的方法我还没有想出来

可以。精确控制的话,就要自己写个函数来处理了。通常方法是产生一个随机数,根据随机数落在的范围决定产生什么结果。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

17#
发表于 2017-2-24 16:51:16 |只看该作者
brahmagupta 发表于 2017-2-24 16:20
crossin老师 ,有 对list插入元素、对list拆分 等操作的相关方法么?

有啊,你再往后看几课。
也可以网上搜一搜python list的操作
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-24 04:13 , Processed in 0.020515 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部