Python循环列表并向变量追加值



我有一个带有ip的.csv文件,我用Python将其转换为列表:

def ip_list():
iplist = []
with open("/path/to/file") as csvfile:
csvlist = csv.reader(csvfile)
for lists in csvlist:
for item in lists:
iplist.append(item)
return iplist
ip = ip_list()
print(ip)
>>> ["192.168.1.1", "192.168.1.2", ...]

现在我想要列表中的每个值,并每次将它们附加到给定的参数。

上下文函数:

def gencontent(ip, value1, value2, time):
content = [
{
"example": {
"ipadress": ip
}
}
]
return content
ip = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
content = getcontent(ip[0-...], value1, value2, time)

我想循环的内容与每个值在ip:

#Example list for reproduction
ip = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
content = getcontent(ip[0-...], ...)

I do not want:

#Example list for reproduction
ip = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
content1 = getcontent(ip[0], ...)
content2 = getcontent(ip[1], ...)
...

我想基本上每次都用一个新的ip值循环内容。

谢谢!

我不知道getcontent()函数做什么,但是为什么不使用列表理解循环遍历列表中的项呢?

content = [getcontent(x) for x in ip]

如果您只是想索引它们,也许您可以转换为元组并使用enumerate。例如:


ip = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
indexed_ip = enumerate(tuple(ip))
print(list(indexed_ip))
# OUTPUT: 
# [(0, '192.168.1.1'), (1, '192.168.1.2'), (2, '192.168.1.3')]

或者如果您希望索引从1开始,而不是从0开始:


ip = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
indexed_ip = enumerate(tuple(ip), 1)
print(list(indexed_ip))
# OUTPUT: 
# [(1, '192.168.1.1'), (2, '192.168.1.2'), (3, '192.168.1.3')]

或者,在这种情况下,也许字典对你有用。

下面是一个使用字典推导式的例子:


ip_dict = { ip.index(ip_item): ip_item for ip_item in ip}
print(ip_dict)
# OUTPUT:
# {0: '192.168.1.1', 1: '192.168.1.2', 2: '192.168.1.3'}

你可以给字典的键命名,随你的便。如果您发送的是content0,content1等,您可以将字典理解中的键值更改为f’content{str(ip.index(ip_item))}’之类的值。然后,您可以使用ip_dict['content1']等从ip_dict获得值。

关于content = getcontent(ip[0-...])你能更具体一点吗?

我不知道我是否明白你的意思。也许是这样的?
ip = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
def getip(li):
for item in li:
yield(item)
ipgetter = getip(ip)

content = getcontent(next(ipgetter), value1, value2, time) # getcontent got "192.168.1.1"
content = getcontent(next(ipgetter), value1, value2, time) # getcontent got "192.168.1.2"

如果循环已结束,则抛出StopIteration异常

相关内容

  • 没有找到相关文章

最新更新