-
Python之倒序访问list
我们还是用一个list按分数从高到低表示出班里的3个同学:
>>> L = ['Adam', 'Lisa', 'Bart']
这时,老师说,请分数最低的同学站出来。
要写代码完成这个任务,我们可以先数一数这个 list,发现它包含3个元素,因此,最后一个元素的索引是2:
>>> print L[2] Bart
有没有更简单的方法?
有!
Bart同学是最后一名,俗称倒数第一,所以,我们可以用 -1 这个索引来表示最后一个元素:
>>> print L[-1] Bart
Bart同学表示躺枪。
类似的,倒数第二用 -2 表示,倒数第三用 -3 表示,倒数第四用 -4 表示:
>>> print L[-2] Lisa >>> print L[-3] Adam >>> print L[-4] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range
L[-4] 报错了,因为倒数第四不存在,一共只有3个元素。
使用倒序索引时,也要注意不要越界。
查看全部 -
Python按照索引访问list
由于list是一个有序集合,所以,我们可以用一个list按分数从高到低表示出班里的3个同学:
>>> L = ['Adam', 'Lisa', 'Bart']
那我们如何从list中获取指定第 N 名的同学呢?方法是通过索引来获取list中的指定元素。
需要特别注意的是,索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索引是1,以此类推。
因此,要打印第一名同学的名字,用 L[0]:
>>> print L[0] Adam
要打印第二名同学的名字,用 L[1]:
>>> print L[1] Lisa
要打印第三名同学的名字,用 L[2]:
>>> print L[2] Bart
要打印第四名同学的名字,用 L[3]:
>>> print L[3] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range
报错了!IndexError意思就是索引超出了范围,因为上面的list只有3个元素,有效的索引是 0,1,2。
所以,使用索引时,千万注意不要越界。
查看全部 -
Python创建list
Python内置的一种数据类型是列表:
list
。list是一种有序的集合,可以随时添加和删除其中的元素。比如,列出班里所有同学的名字,就可以用一个list表示:
>>> ['Michael', 'Bob', 'Tracy'] ['Michael', 'Bob', 'Tracy']
list是数学意义上的有序集合,也就是说,list中的元素是按照顺序排列的。
构造list非常简单,按照上面的代码,直接用
[ ]
把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list:>>> classmates = ['Michael', 'Bob', 'Tracy'] >>> classmates # 打印classmates变量的内容 ['Michael', 'Bob', 'Tracy']
由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据:
>>> L = ['Michael', 100, True]
一个元素也没有的list,就是空list:
>>> empty_list = []
查看全部 -
def move(n, a, b, c):
if n == 1:#如果只有一个圆盘则直接将圆盘从1移到3
print a , '-->' , c
return
move(n - 1 , a , c , b)如果不止一个圆盘首先要把n-1个圆盘移到2柱,并把n-1个圆盘当成一个整体,然后将最大的那个从1移到3,n-1从2移到3,即可完成汉诺塔问题
print a , '-->' , c
move(n - 1 , b , a , c)
move(4, 'A', 'B', 'C')
查看全部 -
于是,fact(n)用递归的方式写出来就是:
def fact(n): if n==1: return 1 return n * fact(n - 1)
查看全部 -
import math
def quadratic_equation(a, b, c):
de=b**2-4*a*c
if de>=0:
x1=(-b+math.sqrt(de))/(2*a)
x2=(-b-math.sqrt(de))/(2*a)
return x1,x2
else:
return
print quadratic_equation(2, 3, 0)
print quadratic_equation(1, -6, 5)
查看全部 -
import math
def quadratic_equation(a, b, c):
m = math.sqrt(b*b-4*a*c)
if m > 0:
x1 = (-b + m)/(2 * a);
x2 = (-b - m)/(2 * a);
return x1,x2
elif m < 0:
return none
else:
return -b/(2 * a)
print quadratic_equation(2, 3, 0)
print quadratic_equation(1, -6, 5)
查看全部 -
在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。
我们以自定义一个求绝对值的 my_abs 函数为例:
def my_abs(x): if x >= 0: return x else: return -x
请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。
如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。
return None可以简写为return。
请定义一个 square_of_sum 函数,它接受一个list,返回list中每个元素平方的和。
def square_of_sum(L):
return sum([i * i for i in L])
或return sum(i*i for i in L)
print square_of_sum([1, 2, 3, 4, 5])
print square_of_sum([-5, 0, 5, 15, 25])
查看全部 -
sum()函数接受一个list作为参数,并返回list所有元素之和。请计算 1*1 + 2*2 + 3*3 + ... + 100*100。
解法1.
L = [] x = 1 while x <= 100: L.append(x * x) x = x + 1 print sum(L)
2.
L = xrange(1, 101)
print sum([i*i for i in L])
3.
print sum([n**2 for n in range(1,101)])
4.
L = []
x=1
while True:
if x==101:
break
L.append(x**2)
x=x+1
print sum(L)
查看全部 -
由于set存储的是一组不重复的无序元素,因此,更新set主要做两件事:
一是把新的元素添加到set中,二是把已有元素从set中删除。
添加元素时,用set的add()方法:
如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:
删除set中的元素时,用set的remove()方法:
如果删除的元素不存在set中,remove()会报错:
所以用add()可以直接添加,而remove()前需要判断。
针对下面的set,给定一个list,对list中的每一个元素,如果在set中,就将其删除,如果不在set中,就添加进去。
for name in L: if name in s: s.remove(name) else: s.add(name)
查看全部 -
请用 for 循环遍历如下的set,打印出 name: score 来。
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
?不会了怎么办
注意到set的元素是tuple,因此 for 循环的变量被依次赋值为tuple。
参考代码:
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)]) for x in s: print x[0] + ':', x[1]
查看全部 -
由哪部分决定结果返回那一部分的值
查看全部 -
weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])
查看全部 -
由于set存储的是无序集合,所以我们没法通过索引来访问。
访问 set中的某个元素实际上就是判断一个元素是否在set中。
set区分大小写
查看全部 -
set里面用单引号修饰字符串
查看全部
举报