列表中有N個數,自動分別給N個數賦值

比如a=[1,2,3,4,5] ,想用簡單的代碼賦值b1=a[0] b2=a[1] b3=a[2] b4=a[3] b5=a[4] bn=a[len(a)]

使用下列方法會報cant assign to Ellipisi的錯誤

i=0

n=len(a)

b1,b2,b3,...,bn=a[i:i+n]

請高手指點


@吳庭 我和這位老鐵想到的是同一種方法,所以為了不衝突我就換一種寫法吧

a = [11, 22, 113, 34, 445]

globals().update({f"b{i+1}": a[i] for i in range(len(a))})

print(b1) # 11
print(b2) # 22
print(b3) # 113
print(b4) # 34
print(b5) # 445


這種情況可以用exec

for i in range(len(a)):
exec(fb{i}=a[{i}])


最簡單的一個方法為

見以下用例

a = [1,2,3,4,5,6]
b,c,d,e,f,g = a
print(b)
print(c)
print(d)
print(e)

展示的結果為:

這個使用方法出自python cookbook 這本書


[b0,b1,b2] =a[0:3]

或者,全局情況:

arr= list(range(100))

for i in range(100):

globals()[b+str(i)]= arr[i]

py 里所有變數都可以找到容納它的字典,比如Class 是 __dict__, 全局是globals()..... 等等


a = [1,2,3,4,5]
b = [b+str(i) for i in range(1,len(a)+1)]
c = dict(zip(b,a))
for k,v in c.items():
print(f{k} = {v})

1、利用列表推導式,得出b1,b2,b3,…bn

2、zip將a,b 連接起來(在python3中,zip返回一個對象,需要利用dict或者list顯示轉化為字典或列表)

3、遍歷c


為什麼會想到 `b1,b2,b3,...,bn=a[i:i+n]` 這種賦值方式?計算機無法理解這種做法。

可以試試下面的方法,使用下標索引不就行了?

&>&>&> a = [1,2,3,4,5]
&>&>&> b = []
&>&>&> from copy import deepcopy
&>&>&> b = deepcopy(a)
&>&>&> b
[1, 2, 3, 4, 5]
&>&>&> b.append(6)
&>&>&> b
[1, 2, 3, 4, 5, 6]
&>&>&> a
[1, 2, 3, 4, 5]
&>&>&> b[0]
1
&>&>&> b[1]
2
&>&>&> b[2]
3


推薦閱讀:
相关文章