嘿,我在解决这个问题时遇到了问题:
让我们从包含元素和空白列表的列表开始。
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'
答案 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)