如何在python中将元素追加到列表

时间:2019-01-30 08:05:08

标签: python

using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using LockRotationWpf.Annotations;

namespace LockRotationWpf.ViewModels
{
    // Omit the INotifyPropertyChanged implementation if already implemented on a base ViewModel class.
    public class MainWindowViewModel : INotifyPropertyChanged
    {
        public double _angle;

        public MainWindowViewModel()
        {
            Microsoft.Win32.SystemEvents.DisplaySettingsChanged += DisplaySettingsChanged;
        }

        private void DisplaySettingsChanged(object sender, EventArgs e)
        {
            Angle = System.Windows.SystemParameters.PrimaryScreenHeight > System.Windows.SystemParameters.PrimaryScreenWidth ? -90 : 0;
        }

        public double Angle
        {
            get { return _angle; }
            set
            {
                _angle = value;
                OnPropertyChanged();
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        [NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

最后,当我尝试打印列表中的所有元素时,仅打印了最后一个元素。

3 个答案:

答案 0 :(得分:1)

您需要在循环外而不是每次在循环内创建列表name_list = []

Ps。对您的range()进行一些更改:

name_list = []

totalNum = int(input("No of people?"))
for i in range(totalNum):   
    name = input("Name?")
    name_list.append(name)
print(name_list)

答案 1 :(得分:0)

您的代码存在的问题是您在每次迭代中都要重新初始化列表,因此一旦循环完成,就会打印出最后一个列表。

这是代码的固定版本

totalNum = int(input("No of people?"))
name_list = []
for _ in range(totalNum):
    name = input("Name?")
    name_list.append(name)
print(name_list)

还要注意这里使用_,这是python中的一个特殊的丢弃变量,如果只需要一个虚拟变量来遍历序列,则可以使用它。

此外,您无需像range那样初始化range(1,totalNum+1),因为python序列始终从0开始,您可以执行range(totalNum)

答案 2 :(得分:0)

这里的问题是,在循环内您重新初始化了 name_list 变量。 尝试放在for / in语句之外