分配列表的多个值

时间:2015-07-15 09:09:34

标签: python list assign

我很想知道是否有一个" 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]

6 个答案:

答案 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])