python循环里的列表怎样添加到循环外

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python循环里的列表怎样添加到循环外相关的知识,希望对你有一定的参考价值。

参考技术A python循环添加列表_Python列表与循环体

列表

列表是Python⾥最为常见、常使⽤的⼀种集合类,前述集合⼀章⾥给出了集合的定义和意图,即⼀堆数据⽤特定的符号整合起来视为⼀个整体,Python的列表List所使⽤的特殊集合符号为⽅括号,⽤逗号(,)间隔每个元素(元素类型可以不同)。列表是有序且可修改的集合类型。本章将围绕列表的基本概念、创建、使⽤展开,以及和列表相关的函数。

创建列表

列表有⼏个基本特征,第⼀是⽤⽅括号括起来、⽤逗号间隔;第⼆是列表⾥的元素类型可以相同或不同;第三列表可变可修改,长度可变内容可变。

创建或声明⼀个列表,(1)可以依据列表的定义⽤⽅括号括起来、⽤逗号间隔的形式创建,例如下边的a和b这两个列表。

a = [1, 2, 3]print a

b = [12, 13.5, 'h']print b

程序执⾏结果如下:

[1, 2, 3]

[12, 13.5, 'h']

从程序的执⾏结果可以得到验证列表内的各个元素的类型可以不相同。

也可以通过list()函数将某些数据类型转化为列表。

s = "hello"

a = list(s)print a

程序执⾏结果如下:

['h', 'e', 'l', 'l', 'o']

这个列表⾥的每个元素都是字符。

列表元素的访问

列表是有序的,每个元素都有⼀个位置坐标⽤index表⽰,在Python可以通过index访问列表的某位置上的数据值,当然也可修改该位置上的数据值。

访问某位置数据的语法格式

列表名[index]

假设列表的元素个数(即列表的长度)为n,那么列表各个元素的位置index从左向右(正向)依次为0、1、2....、n-1。从右向左(负⽅向)依次为-1、-2、... -n。

下⾯以基于“python”字符串构建出的列表为例

s = "python"print s

a = list(s)print a

程序的执⾏结果为:

python

['p', 'y', 't', 'h', 'o', 'n']

s为字符串"python",⽽a为列表。a⾥的各个元素的index位置信息如下图所⽰。

对于列表a⾥的元素't'的正向坐标为2,负向坐标为-4。

s = "python"print s

a = list(s)print aprint a[2], a[-4]

程序的执⾏结果如下所⽰:

python

['p', 'y', 't', 'h', 'o', 'n']

t t

修改某位置的数据的语法格式

列表名[index] = 新值

举例:将字符'p'改为⼤写的'P'。

s = "python"

a = list(s)print a[0],a[1]

a[0] = 'P'print a[0],a[1]

程序的执⾏结果

python

['p', 'y', 't', 'h', 'o', 'n']

t t

p y

P y

由此可见,可以通过index访问或修改列表的某位置上的元素值。

遍历列表的各个元素值

如果想遍历整个列表,这⾥需要借助于循环体,可使⽤while或for循环体,有关for以后再讲,这⾥⽤while,因为之前有介绍过while循环体。

while循环体基本结构

循环体条件的变量初始化while 条件:

语句1

语句2

....

循环体变量的修正else:

语句a

....

举例:通过while循环体结构打印1~100。

#coding:utf-8# while条件表达式涉及的变量初始化

i = 1 # i <= 100为print i和 i = i + 1重复执⾏的条件while i <= 100:#while⾥可重复执⾏的语句print i#修正循环体变量i的值,使得i <= 100最终变为Fasle⽽终⽌while循环 i = i + 1

在回顾了while的基本使⽤以后,可以利⽤while和列表的index来遍历列表的各个元素值了。

s = "python"

a = list(s)

index = 0while index < len(a):print index, a[index]

index = index + 1

程序的执⾏结果:

0 p1 y2 t3 h4 o5 n

这⾥使⽤了len函数,是Python内建(⾃带)函数,可以测集合数据类型的长度(个数)值。

思考:如果基于负向坐标正向打印列表a的各元素值?


5.9
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
python循环添加列表_Python列表与循环体
python循环添加列表_Python列表与循环体

列表

列表是Python⾥最为常见、常使⽤的⼀种集合类,前述集合⼀章⾥给出了集合的定义和意图,即⼀堆数据⽤特定的符号整合起来视为⼀个整体,Python的列表List所使⽤的特殊集合符号为⽅括号,⽤逗号(,)间隔每个元素(元素类型可以不同)。列表是有序且可修改的集合类型。本章将围绕列表的基本概念、创建、使⽤展开,以及和列表相关的函数。

第 1 页
创建列表

列表有⼏个基本特征,第⼀是⽤⽅括号括起来、⽤逗号间隔;第⼆是列表⾥的元素类型可以相同或不同;第三列表可变可修改,长度可变内容可变。

创建或声明⼀个列表,(1)可以依据列表的定义⽤⽅括号括起来、⽤逗号间隔的形式创建,例如下边的a和b这两个列表。

a = [1, 2, 3]print a

b = [12, 13.5, 'h']print b

程序执⾏结果如下:

第 2 页
[1, 2, 3]

[12, 13.5, 'h']

从程序的执⾏结果可以得到验证列表内的各个元素的类型可以不相同。

也可以通过list()函数将某些数据类型转化为列表。

s = "hello"

a = list(s)print a

程序执⾏结果如下:

['h', 'e', 'l', 'l', 'o']

第 3 页
这个列表⾥的每个元素都是字符。

列表元素的访问

列表是有序的,每个元素都有⼀个位置坐标⽤index表⽰,在Python可以通过index访问列表的某位置上的数据值,当然也可修改该位置上的数据值。

访问某位置数据的语法格式

列表名[index]

假设列表的元素个数(即列表的长度)为n,那么列表各个元素的位置index从左向右(正向)依次为0、1、2....、n-1。从右向左(负⽅向)依次为-1、-2、... -n。

第 4 页
下⾯以基于“python”字符串构建出的列表为例

s = "python"print s

a = list(s)print a

程序的执⾏结果为:

python

['p', 'y', 't', 'h', 'o', 'n']

s为字符串"python",⽽a为列表。a⾥的各个元素的index位置信息如下图所⽰。

第 5 页
对于列表a⾥的元素't'的正向坐标为2,负向坐标为-4。

s = "python"print s

a = list(s)print aprint a[2], a[-4]

程序的执⾏结果如下所⽰:

python

['p', 'y', 't', 'h', 'o', 'n']

t t

修改某位置的数据的语法格式

列表名[index] = 新值

第 6 页
举例:将字符'p'改为⼤写的'P'。

s = "python"

a = list(s)print a[0],a[1]

a[0] = 'P'print a[0],a[1]

程序的执⾏结果

python

['p', 'y', 't', 'h', 'o', 'n']

t t

p y

P y

第 7 页
由此可见,可以通过index访问或修改列表的某位置上的元素值。

遍历列表的各个元素值

如果想遍历整个列表,这⾥需要借助于循环体,可使⽤while或for循环体,有关for以后再讲,这⾥⽤while,因为之前有介绍过while循环体。

while循环体基本结构

循环体条件的变量初始化while 条件:

语句1

语句2

第 8 页
....

循环体变量的修正else:

语句a

....

举例:通过while循环体结构打印1~100。

#coding:utf-8# while条件表达式涉及的变量初始化

i = 1 # i <= 100为print i和 i = i + 1重复执⾏的条件while i <= 100:#while⾥可重复执⾏的语句print i#修正循环体变量i的值,使得i <= 100最终变为Fasle⽽终⽌while循环 i = i + 1

第 9 页
在回顾了while的基本使⽤以后,可以利⽤while和列表的index来遍历列表的各个元素值了。

s = "python"

a = list(s)

index = 0while index < len(a):print index, a[index]

index = index + 1

程序的执⾏结果:

0 p1 y2 t3 h4 o5 n

这⾥使⽤了len函数,是Python内建(⾃带)函数,可以测集合数据类型的长度(个数)值。

Python循环遍历列表并根据条件追加

【中文标题】Python循环遍历列表并根据条件追加【英文标题】:Python loop through lists and append according to conditions 【发布时间】:2015-10-03 03:49:07 【问题描述】:

我有 3 个非常长的列表(长度为 15,000)。例如,这三个列表是:

A    B    C
0    2    3
0    4    5
0    3    3
1    2    6
1    3    5
0    2    7
1    8    8

我想获取所有那些 A 的对应索引为 0 的 B 和 C 值。例如,如果 A[i] == 0 那么我想将 B[i] 添加到 listB_0C[i]listC_0.

我试过了

listB_0 = []
listC_0 = []

for a,b,c in zip(A,B,C):
    if a == 0:
        listB_0.append(B)
        listC_0.append(C)

但这似乎使 Python 进入了一个永无止境的循环,即使 5 分钟后,我看到程序仍在运行。

我最终想要的是,例如 listA = 0 的 listB 和 listC 将是

listB_0 = [2,4,3,2]
listC_0 = [3,5,3,7] 

实现这一目标的正确方法是什么?

【问题讨论】:

看起来您正在附加整个列表 B 而不是元素 b 这也是我的猜测!!如何根据上述条件追加? listB_0.append(b)listC_0.append(c) 【参考方案1】:

Brobin 已经在他的评论中指出了这一点:不是bc,而是整个列表BC 被附加。

这应该可行:

A = [0, 0, 0, 1, 1, 0, 1]
B = [2, 4, 3, 2, 3, 2, 8]
C = [3, 5, 3, 6, 5, 7, 8]

listB_0 = []
listC_0 = []

for a, b, c in zip(A,B,C):
    if a == 0:
        listB_0.append(b)
        listC_0.append(c)

print listB_0
print listC_0

>>> 
[2, 4, 3, 2]
[3, 5, 3, 7]

【讨论】:

【参考方案2】:

您想为listB_0 附加值b 和为listC_0 附加值c,而不是列表本身。

for a,b,c in zip(A,B,C):
    if a == 0:
        listB_0.append(b)
        listC_0.append(c)

【讨论】:

【参考方案3】:

如 cmets 中所述,您应该附加 b 而不是 B。我想指出,您可以使用列表推导而不是循环来以“pythonic”方式获取结果。

A = [0, 0, 0, 1, 1, 0, 1]
B = [2, 4, 3, 2, 3, 2, 8]

listB_0 = [b for a, b in zip(A, B) if a == 0]
print(listB_0)  # [2, 4, 3, 2]

【讨论】:

【参考方案4】:

这里真的不需要zip()

# use xrange(len(A)) if in Python 2
for i in range(len(A)):
    if A[i] == 0:
        listB_0.append(B[i])
        listC_0.append(C[i])

【讨论】:

以上是关于python循环里的列表怎样添加到循环外的主要内容,如果未能解决你的问题,请参考以下文章

python 如何对嵌套字典里的数据进行添加和删除?

购物车

迭代循环并将列表添加到新行或新列中的数据框

PHP 循环取文件夹里面文件的名称 然后列表

Networkx:通过循环遍历节点列表添加属性时,IndexError:列表索引超出范围

python列表里的字典元素合并去重