python
列表和元组
a = [1, 2, 3]
b = a
b[1] = 4
print a[1]
结果为 :4
def f(l):
l[1] = [5]
return l
a = [1, 2, 3]
f(a)
print a[1]
结果为:5
def f(l):
l = [4, 5, 6]
return l
a = [1, 2, 3]
f(a)
print a[1]
小测验
def func(lst):
for i in range(len(lst) - 1):
for j in range(i + 1, len(lst)):
if lst[i] < lst[j] :
lst.insert(i, lst.pop(j))
else:
pass
else:
return lst
return -1
lst1 = [6, 2, 4, 1, 5, 9]
lst2 = func(lst1)
lst2[3:-2] = []
print lst1
结果为:[9, 6, 5, 2, 1]
有 3 个回文数字,第一个是两位数,第二个是三位数。将这两个数字相加得到第三个数字,这是个四位数。请问第三个数字式多少?
import random
#判断回文数
def is_huiwen(x):
if x>=1 and x<10:
return True
else:
is_f=1
x_t=x
num=0
if x_t%10==0:
is_f=0
if is_f==0:
return False
while x_t!=0:
num=num*10+x_t%10
x_t=x_t/10
if num==x:
return True
else:
return False
#生成(10,100)回文数的列表
list1=[i for i in range(10,100)]
j=0
while True:
if j>=len(list1):
break
if not(is_huiwen(list1[j])):
del list1[j]
else:
j+=1
#生成(100,1000)回文数的列表
list2=[i for i in range(100,1000)]
j=0
while True:
if j>=len(list2):
break
if not(is_huiwen(list2[j])):
del list2[j]
else:
j+=1
#生成(1000,10000)回文数的列表
list3=[i for i in range(1000,10000)]
j=0
while True:
if j>=len(list3):
break
if not(is_huiwen(list3[j])):
del list3[j]
else:
j+=1
#得到三个数的结果
k=1
while k:
o = random.sample(list1,1)
p = random.sample(list2,1)
q = random.sample(list3,1)
qian=o
zhong=p
hou=q
math_qian=eval(str(qian[0]))
math_zhong=eval(str(zhong[0]))
math_hou=eval(str(hou[0]))
k=math_qian+math_zhong-math_hou
print qian,zhong,hou
[此段代码网上查找的]
列表解析或推导(List Comprehension)
一种由原列表创建新列表的简洁方法
[表达式 for 变量 in 列表 if 条件]
如生成值为 {x² : x ∈ {1 … 9}} 的列表
lst=[]
for x in range(1,10):
lst.append(x**2)
print lst
列表解析
lst=[x**2 for x in range(1,10)]
lambda
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。
def f(x):
return x**2
print f(2)
4
g=lambda x:x**2
print g(2)
4