python向函数传递列表,【Python】向函数传递列表

向函数传递列表

在实际使用中你会发现,向函数传递列表是比较实用的,这种列表可能包含名字、数字、可能更复杂的对象(字典)

假设向一个函数传递一堆水果,我们说出我们喜欢所有的水果

def Obj(fruits):

for fruit in fruits:

msg = 'I like '+fruit+'!'

print(msg)

L = ['apple','orange']

Obj(L)

我们将Obj定义成接受一个水果种类列表,并将其存储在形参Obj中,这个函数遍历接受到的列表,然后打印'I like ..!'

在函数中修改列表

#首先定义一个列表,其中包含要打印的字母

letters = ['A','B','C','D']

already_letter = []

#模拟阅读每个字母,直到字母读取完毕为止

#将每个已经阅读过的字母转移到列表already_letter中

while letters:

current_letter = letters.pop()

print("Printing letter:"+current_letter)

already_letter.append(current_letter)

#显示已经读取的所有字母

print("\nThe follwing letter has been read:")

for letter in already_letter:

print(letter)

我们首先需要创建一个列表,还创建一个名为already_letter的空列表,每个已经阅读过的字母都存储到这个列表中,只要列表中还有字母,while循环就模拟阅读过程:从该列表中删除一个已经读取的字母,然后将其存储到变量current_letter中,并显示一条消息,再将该字母存储到新列表中,等到循环结束后,再打印出所有的字母。

上述程序改编版

def read_letter(letters,already_letter):

"""

读取每个字母,直到读取完毕为止

将读取完毕后的字母存储到新的列表中

:param letters:

:param already_letter:

:return:

"""

while letters:

current_letter = letters.pop()

#模拟读取字母的过程

print("Printing letter:" + current_letter)

already_letter.append(current_letter)

def show_already_letter(already_letter):

"""

显示已经阅读的所有字母

:param already_letter:

:return:

"""

print("\nThe follwing letters has been read:")

for letter in already_letter:

print(letter)

letters = ['A','B','C','D']

already_letter=[]

read_letter(letters,already_letter)

show_already_letter(already_letter)

我们定义了函数read_letter(),它包含2个形参:一个需要阅读字母的列表和一个存储已经阅读字母的列表。给定这两个列表,这个函数模拟阅读过程:将字母一个个阅读,然后打印,最后将其转存到存储已阅读的列表中,函数show_already_letter()主要是打印已经阅读字母列表,最后四条语句是定义一个列表与一个空列表,调用上面的两个函数。

总结

上面的函数中,在读取完毕之后,letters列表就编程空列表了,那么假如我们想在读取完列表后还保留该列表,该怎么办呢?

使用切片法[ : ]创建列表的副本

def read_letter(letters,already_letter):

"""

读取每个字母,直到读取完毕为止

将读取完毕后的字母存储到新的列表中

:param letters:

:param already_letter:

:return:

"""

while letters:

current_letter = letters.pop()

#模拟读取字母的过程

print("Printing letter:" + current_letter)

already_letter.append(current_letter)

def show_already_letter(already_letter):

"""

显示已经阅读的所有字母

:param already_letter:

:return:

"""

print("\nThe follwing letters has been read:")

for letter in already_letter:

print(letter)

letters = ['A','B','C','D']

already_letter=[]

read_letter(letters[:],already_letter)

show_already_letter(already_letter)

print(letters)

通过这段代码的打印结果可以看出,列表已经被复制了哦!

深入理解python中函数传递参数是值传递还是引用传递

深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...

python禁止函数修改列表的实现方法

python禁止函数修改列表的实现方法 有时候,需要禁止函数修改列表.例如要对裂变进行修改操作,也要保留原来的未打印的设计列表,以供备案.为解决这个问题,可向函数传递列表的副本而不是原件:这样函数所做 ...

Python中函数传递参数有四种形式

Python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及, ...

python_函数传递列表

'''#创建一个空列表,包含一些要打印的设计unprinted_designs = ['iphone','robot','books']completed_modles = [] #模拟打印每个设计, ...

Python 利用函数、列表来实现计算天数

这几天课程学习了列表的操作,结合以前的函数知识,编写了一个能够判断天数的代码 源码如下 def is_year(year): return year % 4 == 0 and year % 100 ! ...

Python Django Ajax 传递列表数据

function getTableContent(node) { event.preventDefault(); var tr = node.parentNode.parentNode; var id ...

Python sorted函数对列表排序

http://jingyan.baidu.com/article/f3ad7d0ffe8e1409c2345b48.html http://www.cnblogs.com/100thMountain/ ...

python函数2(返回值、传递列表...)

python函数2(返回值.传递列表...) 1.返回值 1.1.返回简单的值 #返回简单值 def get_formatted_name(first_name,last_name): "& ...

python 函数传递参数的多种方法

python中函数根据是否有返回值可以分为四种:无参数无返回值,无参数有返回值,有参数无返回值,有参数有返回值. Python中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递 ...

随机推荐

Linux uniq常用命令

-u 只显示不重复行.-d 只显示有重复数据行,每种重复行只显示其中一行-c 打印每一重复行出现次数.-f n为数字,前n个域被忽略.一些系统不识别- f选项,这时替代使用- n.

32-bit Assembly on x86_64 Linux (Use Nasm and ld&gcc)

Assembly on x86_64 Linux Some instructions in Intel assembly set are invalid in x86_64 env. e.g. aaa ...

jdownload的使用

Oracle之自定义函数

数据库中函数包含四个部分:声明.返回值.函数体和异常处理. --没有参数的函数 create or replace function get_user return varchar2 is v_use ...

IEnumerable接口的实现

对象要实现可以迭代需IEnumerable接口并实现GetEnumerator方法.一下简单例子 public class SPEnumerable : IEnumerable { ...

N元数组的子数组之和的最大值

题目:有N个整数的元素的一维数组,求子数组中元素之和中最大的一组(思想:动态规划) 分析: 设该数组为array[N], 那么对于array[i]该不该在元素之和最大的那个子数组中呢?首先,不如假设a ...

jquery 分页控件(二)

上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的,我弄了个简单的asp.net ...

python之面向对象那点事

一.类与对象 1.什么是类?类,顾名思义,就是具体相同属性的同一类事物的统称及抽象.对象,指是就是具体的抽象类的实例 以上的说法是不是看起来有点云里来雾里去呢.没错,专业的解释总是让人难以理解,这就是 ...

C++ 虚函数表解析(比较清楚,还可打印虚函数地址)

C++ 虚函数表解析 陈皓 http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值