我很想知道是否有一个" pythonic"将列表中的值分配给元素的方法?为了更清楚,我要求这样的事情:
myList = [3, 5, 7, 2]
a, b, c, d = something(myList)
那样:
a = 3
b = 5
c = 7
d = 2
我正在寻找任何其他更好的选择,而不是手动执行此操作:
a = myList[0]
b = myList[1]
c = myList[2]
d = myList[3]
答案 0 :(得分:16)
只需输入:
>>> a,b,c,d = [1,2,3,4]
>>> a
1
>>> b
2
>>> c
3
>>> d
4
当您将assignment unpacking
分配给多个变量时,Python会使用iterable
。
在Python3.x
中,这已被扩展,因为您还可以使用星号运算符解包大量小于iterable
长度的变量:
>>> a,b,*c = [1,2,3,4]
>>> a
1
>>> b
2
>>> c
[3, 4]
答案 1 :(得分:3)
完全同意NDevox的回答
import turtle
import random
# create a turtle variable
t = turtle.Turtle()
screen = turtle.getscreen()
my_list = [4,3,2,1]
# function to draw the square pattern
def draw_square_pattern(x,y):
for i in my_list:
t.pencolor("blue")
t.pendown()
t.forward(100 * i/4)
t.left(90)
t.forward(100 * i/4)
t.left(90)
t.forward(100 * i/4)
t.left(90)
t.forward(100 * i/4)
t.left(90)
t.penup()
t.forward(12.5)
t.left(90)
t.forward(12.5)
t.right(90)
t.penup()
# main function
# when click do function
screen.onclick(draw_square_pattern)
我认为还值得一提的是,如果您只需要列表的一部分,例如列表中的第二个和最后一个元素,那么您可以这样做
a,b,c,d = [1,2,3,4]
答案 2 :(得分:1)
a, b, c, d = myList
是你想要的。
基本上,该函数返回一个元组,类似于一个列表 - 因为它是一个可迭代的。
这适用于btw的所有迭代。
答案 3 :(得分:1)
一个技巧是在Python 3.8中使用walrus运算符,以便仍然具有my_list变量。并使其成为单行操作。
>>> my_list = [a:=3, b:=5, c:=7, d:=2]
>>> a
3
>>> b
5
>>> c
7
>>> d
2
>>> my_list
[3, 5, 7, 2]
PS:使用camelCase(myList)也不是pythonic。
Python 3.8的新功能:https://docs.python.org/3/whatsnew/3.8.html
答案 4 :(得分:0)
您也可以使用字典。这是如果列表中有更多元素,则不必浪费时间对其进行硬编码。
import string
arr = [1,2,3,4,5,6,7,8,9,10]
var = {let:num for num,let in zip(arr,string.ascii_lowercase)}
现在我们可以像这样访问字典中的变量。
var['a']
答案 5 :(得分:-1)
不确定目标是如何遍历这样的变量,但是您始终可以使用列表,唯一的问题是需要某种类型来键入列表。
example0="result1"
example1="result2"
example2="result3"
example3="result4"
example4="result5"
sample_list = [example0, example1, example2, example3, example4]
for i in range(0,5):
print(sample_list[i])