如何对列表的每个元素执行操作并将结果放在Python的新列表中?

时间:2012-09-13 20:33:57

标签: python list loops

嘿,我在解决这个问题时遇到了问题:

让我们从包含元素和空白列表的列表开始。

L = [a, b, c]  
BL = [  ]

我需要做的是在L [0]上执行任务并将结果输入BL [0]。 然后在L [1]上执行任务并将结果输入BL [1]。 然后当然与列表中的最后一个元素相同。导致

L = [a, b, c]
BL =[newa, newb, newc]

我希望你明白我想弄清楚的是什么。我是编程的新手,我猜这可能是用for循环完成的,但我一直都会遇到错误。

好的我这就是我试过的。注意:链接是一个链接列表。

def blah(links):
   html = [urlopen( links ).read() for link in links]
   print html[1]

我收到此错误:

Traceback (most recent call last):
File "scraper.py", line 60, in <module>
main()
File "scraper.py", line 51, in main
getmail(links)
File "scraper.py", line 34, in getmail
html = [urlopen( links ).read() for link in links]
File "/usr/lib/python2.6/urllib.py", line 86, in urlopen
return opener.open(url)
File "/usr/lib/python2.6/urllib.py", line 177, in open
fullurl = unwrap(toBytes(fullurl))
File "/usr/lib/python2.6/urllib.py", line 1032, in unwrap
url = url.strip()
AttributeError: 'list' object has no attribute 'strip'

7 个答案:

答案 0 :(得分:5)

  

好的,我继承了我尝试的内容..注意:链接是一个链接列表。

html = [urlopen( links ).read() for link in links]

在这里,您要求Python迭代links,使用link作为每个元素的名称......并且对于每个link,您调用urlopen。 ..与links,即整个列表。大概你想每次传递给定的link

答案 1 :(得分:4)

简单,这样做:

BL = [function(x) for x in L]

答案 2 :(得分:1)

了解列表推导。

BL = [action(el) for el in L]

答案 3 :(得分:1)

以下是一些不同的方法,它们在首次运行时都假定L = ['a', 'b', 'c']BL = []

# Our function
def magic(x):
    return 'new' + x

#for loop - here we loop through the elements in the list and apply
# the function, appending the adjusted items to BL
for item in L:
    BL.append(magic(item))

# map - applies a function to every element in L. The list is so it
# doesn't just return the iterator
BL = list(map(magic, L))

# list comprehension - the pythonic way!
BL = [magic(item) for item in L]

一些文档:

答案 4 :(得分:0)

你创建了一个函数,它可以执行你想要的所有操作并使用map函数

def funct(a): # a here is L[i]
     # funct code here
     return b #b is the supposed value of BL[i]
BL = map(funct, L)

答案 5 :(得分:0)

怎么样?

x = 0
for x in range(len(L)):
    BL.append(do_something(x))

不像一些答案那样简洁,但我很容易理解。

以下评论的疯狂变化。

答案 6 :(得分:0)

这里有用的工具是函数式编程。 Python支持一些可以解决这个问题的高阶函数。

我们想要使用的函数称为map。这里的一些答案使用map,但没有一个完全接受功能方法。为此,我们将使用在函数式编程中使用的'lambda',而不是使用标准的python'def'来创建函数。这使我们可以在一行中很好地解决您的问题。

要了解有关lambdas有用的原因,请访问here。我们将按如下方式解决您的问题:

r = map(lambda x: urlopen(x).read(), L)