1樓:浩星辰錕
您好,因為您要使用for迴圈過一遍each_list,並且不能使用number = each_list[0]這樣的賦值語句,根據您的要求,有如下程式完全符合您的要求,只是有一點麻煩,除錯過程中記得先定義好number, year, model, speed四個全域性變數:
def number(i):
global number
number = i
def year(i):
global year
year = i
def model(i):
global model
model = i
def speed(i):
global speed
speed = i
each_list = ["100", "2012", "34a", "390"]
dic =
for i in each_list:
dic[each_list.index(i)](i)print number, year, model, speed
2樓:
number, year, model, speed = each_list
這個本質還是和number = each_list[0]一樣的。
3樓:匿名使用者
直接用多賦值:
number, year, model, speed = each_list
python賦值問題?
4樓:陽光的雷咩咩
你說的這個現象可能是動態語言特有的
在靜態語言裡比如c,c#,你宣告瞭int a = 10; 再 a = 20; 是不會重新建立一個地址的
而python沒有單獨的型別宣告語句,所以你每次賦值都會新建這也正式python之所以強大的一個方面比如下面的語句也是合法的a = 10
a = 'xyz'
如果你要用同一個地址 那型別都不相容了
但python允許 就給了程式設計師靈活性
5樓:一顆程式猿
python中的資料型別分為可變(mutable)和不可變(immutable)兩種
list是可變的, 因此在賦值的時候相當於多了一份引用, 你對lst2的改變會影響到lst1
而數值型是不可變的, 所以當b=a, 他們指向的是相同的東西(這時的id是一樣的), 但是當重新賦值的時候, 由於它們指向的物件是不可變的, 因此python就會重新建立一個物件並賦值給他, 你可以試試這樣:
a = 10
print(id(a))
a = 20
print(id(a))
雖然就是改變了一下a的值,但實際上是重新建立了一個物件, 因為整型物件一旦建立出來是不能被修改的
6樓:匿名使用者
你漏了另一個知識點:可變變數和不可變變數。
數值屬於不可變變數,比如數值1,一個程式中,記憶體中只用一個地址來儲存它,不管有多少個變數,賦值為1,都只是指向這個變數。
變數重新賦值,只是把指向變更了,
python賦值問題
7樓:盜墓者
引用就是指向的意思。
python的賦值不是真正意義上的賦值,比如a=1,就是將變數a指向常量1,相當於在常量1上貼了一個標籤a。
然後b=[1,2],也是一樣的指向,把b指向列表資料[1,2],但[1,2]由於是可變物件,即可以變成[1]或者其他,但是快取裡的id不變的,所以b指向的就成了新的列表資料[1]。
其實意義不大,不用那麼糾結,在實際開發中這個和其它開發語言沒多大區別,口頭上還是說的賦值,並沒有說引用或者指向,知道這個原理就行
8樓:匿名使用者
就是說賦值時,如果物件是可變的,那麼這個變數就是這個物件的一個引用,等號兩邊指向的是同一個物件,改變其中一個,另一個變數也改變了
python賦值問題
9樓:匿名使用者
不用再糾結輸入的數字用什麼函式去轉換了,不管int還是float或者其他數字型別,直接用eval通殺
10樓:匿名使用者
讀讀文件,就能發現錯誤的原因了:
b = int('3.5')不符合函式對引數的規定,試試換成b=float('3.5'):
c語言指標的賦值問題
11樓:大野瘦子
指標在用要注意初始化,例如:
int *p;
p為指標,地址是未知的,如果直接賦值
*p=a;這樣編譯可以通過,但是會產生警告,p的地址是隨機分配的,這樣對未知的地址賦值很危險,可能會覆蓋掉某些重要資料,所以避免這種危險,在定義指標時注意初始化,也就是賦值。
可以int *p=&a;
或者int *p;
p=&a;
然後再對p進行操作
有錯。注意大小寫,還有
int a=9;
int *p;
p=&a;//這個是指標指向a
*p=8;
這樣就對了。
指標的賦值
int *p;
int a;
int b[1];
p = &a;
p = b;
指標的賦值,「=」的左運算元能夠是*p,也能夠是p。
當「=」的左運算元是*p時,改變的是p所指向的地址存放的資料;
當「=」的左運算元是p時,改變的是p所指向的地址。
陣列的變數名b表示該陣列的首地址,因此p=b;也是正確的
同型別的指標賦值:
int val1 = 18,val2 = 19;
int *p1,*p2;
p1 = &val1;
p2 = &val2;
p1 = p2; //注意啦,p1指向了val2,而沒有指向val1
備註:字串與指標的初始化和賦值
初始化:
char *cp = "abcdefg"; //這個初始化過程,是將指標cp指向字串的首地址,而並非傳遞字串的值。由於,在c語言裡面,沒有總體處理一個字串的機制
賦值:cp = "abcdefg";
*cp=」abcdefg」 ;//錯誤!字串常量傳遞的是它的首地址,不能夠通過*cp改動該字串的值,由於該字串為常量,而它僅僅是簡單的將指標指向該字串常量。
12樓:林聲飄揚
有錯注意:用指標變數前,必須對指標變數賦值如:int i, *p1;
p1=&i;
再如:int a, b;
int *p1, *p2;
*p1=10; *p2=100;
但指標變數未賦值,即指標指向未知地址,這樣是錯誤的因此:絕對不能對未賦值的指標變數作「指向」運算。
int a=9,b;
int *p=&b;//必須加上這一句
*p=a;
*p=8;
這樣就不會產生錯誤
13樓:匿名使用者
注意大小寫!還有
int a=9;
int *p;
p=&a;//這個是指標指向a
*p=8;
這樣就對了。
14樓:七先生是遊戲鬼才
這個還是比較複雜的,你可以學習一下
15樓:匿名使用者
p=&a//把a的地址給指標p
16樓:匿名使用者
語法上沒錯,但可能出現警告,破壞程式其他資料
17樓:渾濃強浩然
p就是一個指標,他指向一個地址,而&p就是p剛才所指向的具體地址,*p是p指向地址裡面的東西。也就是值。*p=&a的意思是把a的地址給了*p,這樣的話p就指向
(指向a的地址)的地址。對指標賦值必須是int*p=null;或者int
*p;p=null。
python賦值問題
18樓:匿名使用者
我是這麼理解的。
x,y,z=1,2,3 其實這是元組賦值,可以寫成(x,y,z=1,2,3),對應位置的變數獲得對應的值。
其中需要說明的是1,2,3是物件,x,y,z是引用。
在執行x,y=y,x時,y,x這個元組其實已經被轉換為2,1了,然後直行賦值後,引用x指向了物件2,引用y指向了物件1。例如:
>>> x,y,z=1,2,3
>>> id(x)
3508720
>>> id(y)
3508708
>>> id(z)
3508696
>>> x,y=y,x
>>> id(x)
3508708
>>> id(y)
3508720
>>>
19樓:匿名使用者
是c語音編寫的嗎?
#include
void main()
這樣的話xy的值沒有交換啊!依舊是123的值哦
簡單python問題,求教,簡單的python問題求教!
func k k表示可變引數,通 過可變引數實現類似於過載的方法。通常我們要定義一個函回數的時候,必須要預 答先定義這個函式需要多少個引數 或者說可以接受多少個引數 一般情況下這是沒問題的,但是也有在定義函式的時候,不能知道引數個數的情況。例如 def func a,b,c print a prin...
關於python的簡單問題,關於python的一個簡單問題
我覺得,你想實現你的邏輯,需要用的是while,而不是用if else,不管輸入幾次錯誤值,用while控制會好點 關於python網路爬蟲的一個簡單問題 你用的是python2,所以才會有這種編碼問題簡單一點的話 你拿python3重寫一下就行了。如果改的話,在表頭定義一下你要輸出的編碼,編碼定義...
關於Python中sort函式賦值的問題
python中的sort 方法用於陣列排序,本文以例項形式對此加以詳細說明 一 基本形式 列表有自己的sort方法,其對列表進行原址排序,既然是原址排序,那顯然元組不可能擁有這種方法,因為元組是不可修改的。123x 4,6,2,1,7,9 x.sort print x 1,2,4,6,7,9 如果需...